/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 164 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) QDP (6) UsableRulesProof [EQUIVALENT, 0 ms] (7) QDP (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] (9) YES (10) QDP (11) UsableRulesProof [EQUIVALENT, 0 ms] (12) QDP (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] (14) YES (15) QDP (16) UsableRulesProof [EQUIVALENT, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) QDP (21) UsableRulesProof [EQUIVALENT, 0 ms] (22) QDP (23) QDPSizeChangeProof [EQUIVALENT, 0 ms] (24) YES (25) QDP (26) UsableRulesProof [EQUIVALENT, 0 ms] (27) QDP (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] (29) YES (30) QDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) QDP (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] (34) YES (35) QDP (36) UsableRulesProof [EQUIVALENT, 0 ms] (37) QDP (38) QDPSizeChangeProof [EQUIVALENT, 0 ms] (39) YES (40) QDP (41) UsableRulesProof [EQUIVALENT, 0 ms] (42) QDP (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] (44) YES (45) QDP (46) UsableRulesProof [EQUIVALENT, 0 ms] (47) QDP (48) QDPSizeChangeProof [EQUIVALENT, 0 ms] (49) YES (50) QDP (51) UsableRulesProof [EQUIVALENT, 0 ms] (52) QDP (53) QDPSizeChangeProof [EQUIVALENT, 0 ms] (54) YES (55) QDP (56) UsableRulesProof [EQUIVALENT, 0 ms] (57) QDP (58) QDPSizeChangeProof [EQUIVALENT, 0 ms] (59) YES (60) QDP (61) UsableRulesProof [EQUIVALENT, 0 ms] (62) QDP (63) QDPSizeChangeProof [EQUIVALENT, 0 ms] (64) YES (65) QDP (66) UsableRulesProof [EQUIVALENT, 0 ms] (67) QDP (68) QDPSizeChangeProof [EQUIVALENT, 0 ms] (69) YES (70) QDP (71) UsableRulesProof [EQUIVALENT, 0 ms] (72) QDP (73) QDPSizeChangeProof [EQUIVALENT, 0 ms] (74) YES (75) QDP (76) UsableRulesProof [EQUIVALENT, 0 ms] (77) QDP (78) QDPSizeChangeProof [EQUIVALENT, 0 ms] (79) YES (80) QDP (81) UsableRulesProof [EQUIVALENT, 0 ms] (82) QDP (83) QDPSizeChangeProof [EQUIVALENT, 0 ms] (84) YES (85) QDP (86) UsableRulesProof [EQUIVALENT, 0 ms] (87) QDP (88) QDPSizeChangeProof [EQUIVALENT, 0 ms] (89) YES (90) QDP (91) UsableRulesProof [EQUIVALENT, 0 ms] (92) QDP (93) QDPSizeChangeProof [EQUIVALENT, 0 ms] (94) YES (95) QDP (96) UsableRulesProof [EQUIVALENT, 0 ms] (97) QDP (98) QDPSizeChangeProof [EQUIVALENT, 0 ms] (99) YES (100) QDP (101) UsableRulesProof [EQUIVALENT, 0 ms] (102) QDP (103) QDPSizeChangeProof [EQUIVALENT, 0 ms] (104) YES (105) QDP (106) UsableRulesProof [EQUIVALENT, 0 ms] (107) QDP (108) QDPSizeChangeProof [EQUIVALENT, 0 ms] (109) YES (110) QDP (111) UsableRulesProof [EQUIVALENT, 0 ms] (112) QDP (113) QDPSizeChangeProof [EQUIVALENT, 0 ms] (114) YES (115) QDP (116) QDPOrderProof [EQUIVALENT, 865 ms] (117) QDP (118) QDPOrderProof [EQUIVALENT, 638 ms] (119) QDP (120) QDPOrderProof [EQUIVALENT, 744 ms] (121) QDP (122) QDPOrderProof [EQUIVALENT, 77 ms] (123) QDP (124) QDPOrderProof [EQUIVALENT, 57 ms] (125) QDP (126) QDPOrderProof [EQUIVALENT, 77 ms] (127) QDP (128) QDPOrderProof [EQUIVALENT, 86 ms] (129) QDP (130) QDPOrderProof [EQUIVALENT, 77 ms] (131) QDP (132) QDPOrderProof [EQUIVALENT, 73 ms] (133) QDP (134) QDPOrderProof [EQUIVALENT, 629 ms] (135) QDP (136) QDPOrderProof [EQUIVALENT, 555 ms] (137) QDP (138) QDPOrderProof [EQUIVALENT, 659 ms] (139) QDP (140) QDPOrderProof [EQUIVALENT, 549 ms] (141) QDP (142) QDPOrderProof [EQUIVALENT, 609 ms] (143) QDP (144) QDPOrderProof [EQUIVALENT, 543 ms] (145) QDP (146) QDPOrderProof [EQUIVALENT, 760 ms] (147) QDP (148) QDPOrderProof [EQUIVALENT, 425 ms] (149) QDP (150) QDPOrderProof [EQUIVALENT, 675 ms] (151) QDP (152) QDPOrderProof [EQUIVALENT, 476 ms] (153) QDP (154) QDPOrderProof [EQUIVALENT, 809 ms] (155) QDP (156) QDPOrderProof [EQUIVALENT, 509 ms] (157) QDP (158) QDPOrderProof [EQUIVALENT, 538 ms] (159) QDP (160) QDPOrderProof [EQUIVALENT, 540 ms] (161) QDP (162) QDPOrderProof [EQUIVALENT, 455 ms] (163) QDP (164) QDPOrderProof [EQUIVALENT, 502 ms] (165) QDP (166) QDPOrderProof [EQUIVALENT, 751 ms] (167) QDP (168) QDPOrderProof [EQUIVALENT, 419 ms] (169) QDP (170) QDPOrderProof [EQUIVALENT, 398 ms] (171) QDP (172) QDPOrderProof [EQUIVALENT, 377 ms] (173) QDP (174) QDPOrderProof [EQUIVALENT, 464 ms] (175) QDP (176) QDPOrderProof [EQUIVALENT, 325 ms] (177) QDP (178) QDPOrderProof [EQUIVALENT, 453 ms] (179) QDP (180) QDPOrderProof [EQUIVALENT, 366 ms] (181) QDP (182) QDPOrderProof [EQUIVALENT, 422 ms] (183) QDP (184) QDPOrderProof [EQUIVALENT, 354 ms] (185) QDP (186) QDPOrderProof [EQUIVALENT, 441 ms] (187) QDP (188) QDPOrderProof [EQUIVALENT, 368 ms] (189) QDP (190) QDPOrderProof [EQUIVALENT, 379 ms] (191) QDP (192) QDPOrderProof [EQUIVALENT, 507 ms] (193) QDP (194) QDPOrderProof [EQUIVALENT, 0 ms] (195) QDP (196) QDPOrderProof [EQUIVALENT, 382 ms] (197) QDP (198) UsableRulesProof [EQUIVALENT, 0 ms] (199) QDP (200) UsableRulesReductionPairsProof [EQUIVALENT, 0 ms] (201) QDP (202) DependencyGraphProof [EQUIVALENT, 0 ms] (203) QDP (204) QDPSizeChangeProof [EQUIVALENT, 0 ms] (205) YES ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. ---------------------------------------- (1) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (2) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) ACTIVE(U11(tt, V1, V2)) -> U12^1(isNatKind(V1), V1, V2) ACTIVE(U11(tt, V1, V2)) -> ISNATKIND(V1) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) ACTIVE(U12(tt, V1, V2)) -> U13^1(isNatKind(V2), V1, V2) ACTIVE(U12(tt, V1, V2)) -> ISNATKIND(V2) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) ACTIVE(U13(tt, V1, V2)) -> U14^1(isNatKind(V2), V1, V2) ACTIVE(U13(tt, V1, V2)) -> ISNATKIND(V2) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) ACTIVE(U14(tt, V1, V2)) -> U15^1(isNat(V1), V2) ACTIVE(U14(tt, V1, V2)) -> ISNAT(V1) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) ACTIVE(U15(tt, V2)) -> U16^1(isNat(V2)) ACTIVE(U15(tt, V2)) -> ISNAT(V2) ACTIVE(U16(tt)) -> MARK(tt) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) ACTIVE(U21(tt, V1)) -> U22^1(isNatKind(V1), V1) ACTIVE(U21(tt, V1)) -> ISNATKIND(V1) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U22(tt, V1)) -> U23^1(isNat(V1)) ACTIVE(U22(tt, V1)) -> ISNAT(V1) ACTIVE(U23(tt)) -> MARK(tt) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) ACTIVE(U31(tt, V2)) -> U32^1(isNatKind(V2)) ACTIVE(U31(tt, V2)) -> ISNATKIND(V2) ACTIVE(U32(tt)) -> MARK(tt) ACTIVE(U41(tt)) -> MARK(tt) ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) ACTIVE(U51(tt, N)) -> U52^1(isNatKind(N), N) ACTIVE(U51(tt, N)) -> ISNATKIND(N) ACTIVE(U52(tt, N)) -> MARK(N) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) ACTIVE(U61(tt, M, N)) -> U62^1(isNatKind(M), M, N) ACTIVE(U61(tt, M, N)) -> ISNATKIND(M) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) ACTIVE(U62(tt, M, N)) -> U63^1(isNat(N), M, N) ACTIVE(U62(tt, M, N)) -> ISNAT(N) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) ACTIVE(U63(tt, M, N)) -> U64^1(isNatKind(N), M, N) ACTIVE(U63(tt, M, N)) -> ISNATKIND(N) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) ACTIVE(U64(tt, M, N)) -> S(plus(N, M)) ACTIVE(U64(tt, M, N)) -> PLUS(N, M) ACTIVE(isNat(0)) -> MARK(tt) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(plus(V1, V2))) -> U11^1(isNatKind(V1), V1, V2) ACTIVE(isNat(plus(V1, V2))) -> ISNATKIND(V1) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNat(s(V1))) -> U21^1(isNatKind(V1), V1) ACTIVE(isNat(s(V1))) -> ISNATKIND(V1) ACTIVE(isNatKind(0)) -> MARK(tt) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(plus(V1, V2))) -> U31^1(isNatKind(V1), V2) ACTIVE(isNatKind(plus(V1, V2))) -> ISNATKIND(V1) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) ACTIVE(isNatKind(s(V1))) -> U41^1(isNatKind(V1)) ACTIVE(isNatKind(s(V1))) -> ISNATKIND(V1) ACTIVE(plus(N, 0)) -> MARK(U51(isNat(N), N)) ACTIVE(plus(N, 0)) -> U51^1(isNat(N), N) ACTIVE(plus(N, 0)) -> ISNAT(N) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) ACTIVE(plus(N, s(M))) -> U61^1(isNat(M), M, N) ACTIVE(plus(N, s(M))) -> ISNAT(M) MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) MARK(U11(X1, X2, X3)) -> U11^1(mark(X1), X2, X3) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(tt) -> ACTIVE(tt) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) MARK(U12(X1, X2, X3)) -> U12^1(mark(X1), X2, X3) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) MARK(U13(X1, X2, X3)) -> U13^1(mark(X1), X2, X3) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) MARK(U14(X1, X2, X3)) -> U14^1(mark(X1), X2, X3) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> U15^1(mark(X1), X2) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) MARK(U16(X)) -> ACTIVE(U16(mark(X))) MARK(U16(X)) -> U16^1(mark(X)) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> U21^1(mark(X1), X2) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> U22^1(mark(X1), X2) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> ACTIVE(U23(mark(X))) MARK(U23(X)) -> U23^1(mark(X)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> U31^1(mark(X1), X2) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> ACTIVE(U32(mark(X))) MARK(U32(X)) -> U32^1(mark(X)) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> ACTIVE(U41(mark(X))) MARK(U41(X)) -> U41^1(mark(X)) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) MARK(U51(X1, X2)) -> U51^1(mark(X1), X2) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) MARK(U52(X1, X2)) -> U52^1(mark(X1), X2) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) MARK(U61(X1, X2, X3)) -> U61^1(mark(X1), X2, X3) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) MARK(U62(X1, X2, X3)) -> U62^1(mark(X1), X2, X3) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> U63^1(mark(X1), X2, X3) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> U64^1(mark(X1), X2, X3) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> ACTIVE(s(mark(X))) MARK(s(X)) -> S(mark(X)) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> PLUS(mark(X1), mark(X2)) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) MARK(0) -> ACTIVE(0) U11^1(mark(X1), X2, X3) -> U11^1(X1, X2, X3) U11^1(X1, mark(X2), X3) -> U11^1(X1, X2, X3) U11^1(X1, X2, mark(X3)) -> U11^1(X1, X2, X3) U11^1(active(X1), X2, X3) -> U11^1(X1, X2, X3) U11^1(X1, active(X2), X3) -> U11^1(X1, X2, X3) U11^1(X1, X2, active(X3)) -> U11^1(X1, X2, X3) U12^1(mark(X1), X2, X3) -> U12^1(X1, X2, X3) U12^1(X1, mark(X2), X3) -> U12^1(X1, X2, X3) U12^1(X1, X2, mark(X3)) -> U12^1(X1, X2, X3) U12^1(active(X1), X2, X3) -> U12^1(X1, X2, X3) U12^1(X1, active(X2), X3) -> U12^1(X1, X2, X3) U12^1(X1, X2, active(X3)) -> U12^1(X1, X2, X3) ISNATKIND(mark(X)) -> ISNATKIND(X) ISNATKIND(active(X)) -> ISNATKIND(X) U13^1(mark(X1), X2, X3) -> U13^1(X1, X2, X3) U13^1(X1, mark(X2), X3) -> U13^1(X1, X2, X3) U13^1(X1, X2, mark(X3)) -> U13^1(X1, X2, X3) U13^1(active(X1), X2, X3) -> U13^1(X1, X2, X3) U13^1(X1, active(X2), X3) -> U13^1(X1, X2, X3) U13^1(X1, X2, active(X3)) -> U13^1(X1, X2, X3) U14^1(mark(X1), X2, X3) -> U14^1(X1, X2, X3) U14^1(X1, mark(X2), X3) -> U14^1(X1, X2, X3) U14^1(X1, X2, mark(X3)) -> U14^1(X1, X2, X3) U14^1(active(X1), X2, X3) -> U14^1(X1, X2, X3) U14^1(X1, active(X2), X3) -> U14^1(X1, X2, X3) U14^1(X1, X2, active(X3)) -> U14^1(X1, X2, X3) U15^1(mark(X1), X2) -> U15^1(X1, X2) U15^1(X1, mark(X2)) -> U15^1(X1, X2) U15^1(active(X1), X2) -> U15^1(X1, X2) U15^1(X1, active(X2)) -> U15^1(X1, X2) ISNAT(mark(X)) -> ISNAT(X) ISNAT(active(X)) -> ISNAT(X) U16^1(mark(X)) -> U16^1(X) U16^1(active(X)) -> U16^1(X) U21^1(mark(X1), X2) -> U21^1(X1, X2) U21^1(X1, mark(X2)) -> U21^1(X1, X2) U21^1(active(X1), X2) -> U21^1(X1, X2) U21^1(X1, active(X2)) -> U21^1(X1, X2) U22^1(mark(X1), X2) -> U22^1(X1, X2) U22^1(X1, mark(X2)) -> U22^1(X1, X2) U22^1(active(X1), X2) -> U22^1(X1, X2) U22^1(X1, active(X2)) -> U22^1(X1, X2) U23^1(mark(X)) -> U23^1(X) U23^1(active(X)) -> U23^1(X) U31^1(mark(X1), X2) -> U31^1(X1, X2) U31^1(X1, mark(X2)) -> U31^1(X1, X2) U31^1(active(X1), X2) -> U31^1(X1, X2) U31^1(X1, active(X2)) -> U31^1(X1, X2) U32^1(mark(X)) -> U32^1(X) U32^1(active(X)) -> U32^1(X) U41^1(mark(X)) -> U41^1(X) U41^1(active(X)) -> U41^1(X) U51^1(mark(X1), X2) -> U51^1(X1, X2) U51^1(X1, mark(X2)) -> U51^1(X1, X2) U51^1(active(X1), X2) -> U51^1(X1, X2) U51^1(X1, active(X2)) -> U51^1(X1, X2) U52^1(mark(X1), X2) -> U52^1(X1, X2) U52^1(X1, mark(X2)) -> U52^1(X1, X2) U52^1(active(X1), X2) -> U52^1(X1, X2) U52^1(X1, active(X2)) -> U52^1(X1, X2) U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) U62^1(mark(X1), X2, X3) -> U62^1(X1, X2, X3) U62^1(X1, mark(X2), X3) -> U62^1(X1, X2, X3) U62^1(X1, X2, mark(X3)) -> U62^1(X1, X2, X3) U62^1(active(X1), X2, X3) -> U62^1(X1, X2, X3) U62^1(X1, active(X2), X3) -> U62^1(X1, X2, X3) U62^1(X1, X2, active(X3)) -> U62^1(X1, X2, X3) U63^1(mark(X1), X2, X3) -> U63^1(X1, X2, X3) U63^1(X1, mark(X2), X3) -> U63^1(X1, X2, X3) U63^1(X1, X2, mark(X3)) -> U63^1(X1, X2, X3) U63^1(active(X1), X2, X3) -> U63^1(X1, X2, X3) U63^1(X1, active(X2), X3) -> U63^1(X1, X2, X3) U63^1(X1, X2, active(X3)) -> U63^1(X1, X2, X3) U64^1(mark(X1), X2, X3) -> U64^1(X1, X2, X3) U64^1(X1, mark(X2), X3) -> U64^1(X1, X2, X3) U64^1(X1, X2, mark(X3)) -> U64^1(X1, X2, X3) U64^1(active(X1), X2, X3) -> U64^1(X1, X2, X3) U64^1(X1, active(X2), X3) -> U64^1(X1, X2, X3) U64^1(X1, X2, active(X3)) -> U64^1(X1, X2, X3) S(mark(X)) -> S(X) S(active(X)) -> S(X) PLUS(mark(X1), X2) -> PLUS(X1, X2) PLUS(X1, mark(X2)) -> PLUS(X1, X2) PLUS(active(X1), X2) -> PLUS(X1, X2) PLUS(X1, active(X2)) -> PLUS(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (3) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 23 SCCs with 66 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Q DP problem: The TRS P consists of the following rules: PLUS(X1, mark(X2)) -> PLUS(X1, X2) PLUS(mark(X1), X2) -> PLUS(X1, X2) PLUS(active(X1), X2) -> PLUS(X1, X2) PLUS(X1, active(X2)) -> PLUS(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (6) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (7) Obligation: Q DP problem: The TRS P consists of the following rules: PLUS(X1, mark(X2)) -> PLUS(X1, X2) PLUS(mark(X1), X2) -> PLUS(X1, X2) PLUS(active(X1), X2) -> PLUS(X1, X2) PLUS(X1, active(X2)) -> PLUS(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (8) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *PLUS(X1, mark(X2)) -> PLUS(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *PLUS(mark(X1), X2) -> PLUS(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *PLUS(active(X1), X2) -> PLUS(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *PLUS(X1, active(X2)) -> PLUS(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (9) YES ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: S(active(X)) -> S(X) S(mark(X)) -> S(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: S(active(X)) -> S(X) S(mark(X)) -> S(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *S(active(X)) -> S(X) The graph contains the following edges 1 > 1 *S(mark(X)) -> S(X) The graph contains the following edges 1 > 1 ---------------------------------------- (14) YES ---------------------------------------- (15) Obligation: Q DP problem: The TRS P consists of the following rules: U64^1(X1, mark(X2), X3) -> U64^1(X1, X2, X3) U64^1(mark(X1), X2, X3) -> U64^1(X1, X2, X3) U64^1(X1, X2, mark(X3)) -> U64^1(X1, X2, X3) U64^1(active(X1), X2, X3) -> U64^1(X1, X2, X3) U64^1(X1, active(X2), X3) -> U64^1(X1, X2, X3) U64^1(X1, X2, active(X3)) -> U64^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (16) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: U64^1(X1, mark(X2), X3) -> U64^1(X1, X2, X3) U64^1(mark(X1), X2, X3) -> U64^1(X1, X2, X3) U64^1(X1, X2, mark(X3)) -> U64^1(X1, X2, X3) U64^1(active(X1), X2, X3) -> U64^1(X1, X2, X3) U64^1(X1, active(X2), X3) -> U64^1(X1, X2, X3) U64^1(X1, X2, active(X3)) -> U64^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U64^1(X1, mark(X2), X3) -> U64^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U64^1(mark(X1), X2, X3) -> U64^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U64^1(X1, X2, mark(X3)) -> U64^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U64^1(active(X1), X2, X3) -> U64^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U64^1(X1, active(X2), X3) -> U64^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U64^1(X1, X2, active(X3)) -> U64^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: U63^1(X1, mark(X2), X3) -> U63^1(X1, X2, X3) U63^1(mark(X1), X2, X3) -> U63^1(X1, X2, X3) U63^1(X1, X2, mark(X3)) -> U63^1(X1, X2, X3) U63^1(active(X1), X2, X3) -> U63^1(X1, X2, X3) U63^1(X1, active(X2), X3) -> U63^1(X1, X2, X3) U63^1(X1, X2, active(X3)) -> U63^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: U63^1(X1, mark(X2), X3) -> U63^1(X1, X2, X3) U63^1(mark(X1), X2, X3) -> U63^1(X1, X2, X3) U63^1(X1, X2, mark(X3)) -> U63^1(X1, X2, X3) U63^1(active(X1), X2, X3) -> U63^1(X1, X2, X3) U63^1(X1, active(X2), X3) -> U63^1(X1, X2, X3) U63^1(X1, X2, active(X3)) -> U63^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U63^1(X1, mark(X2), X3) -> U63^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U63^1(mark(X1), X2, X3) -> U63^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U63^1(X1, X2, mark(X3)) -> U63^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U63^1(active(X1), X2, X3) -> U63^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U63^1(X1, active(X2), X3) -> U63^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U63^1(X1, X2, active(X3)) -> U63^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: U62^1(X1, mark(X2), X3) -> U62^1(X1, X2, X3) U62^1(mark(X1), X2, X3) -> U62^1(X1, X2, X3) U62^1(X1, X2, mark(X3)) -> U62^1(X1, X2, X3) U62^1(active(X1), X2, X3) -> U62^1(X1, X2, X3) U62^1(X1, active(X2), X3) -> U62^1(X1, X2, X3) U62^1(X1, X2, active(X3)) -> U62^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (26) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: U62^1(X1, mark(X2), X3) -> U62^1(X1, X2, X3) U62^1(mark(X1), X2, X3) -> U62^1(X1, X2, X3) U62^1(X1, X2, mark(X3)) -> U62^1(X1, X2, X3) U62^1(active(X1), X2, X3) -> U62^1(X1, X2, X3) U62^1(X1, active(X2), X3) -> U62^1(X1, X2, X3) U62^1(X1, X2, active(X3)) -> U62^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U62^1(X1, mark(X2), X3) -> U62^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U62^1(mark(X1), X2, X3) -> U62^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U62^1(X1, X2, mark(X3)) -> U62^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U62^1(active(X1), X2, X3) -> U62^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U62^1(X1, active(X2), X3) -> U62^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U62^1(X1, X2, active(X3)) -> U62^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: Q DP problem: The TRS P consists of the following rules: U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (31) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (33) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: U52^1(X1, mark(X2)) -> U52^1(X1, X2) U52^1(mark(X1), X2) -> U52^1(X1, X2) U52^1(active(X1), X2) -> U52^1(X1, X2) U52^1(X1, active(X2)) -> U52^1(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (36) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (37) Obligation: Q DP problem: The TRS P consists of the following rules: U52^1(X1, mark(X2)) -> U52^1(X1, X2) U52^1(mark(X1), X2) -> U52^1(X1, X2) U52^1(active(X1), X2) -> U52^1(X1, X2) U52^1(X1, active(X2)) -> U52^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (38) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U52^1(X1, mark(X2)) -> U52^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U52^1(mark(X1), X2) -> U52^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U52^1(active(X1), X2) -> U52^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U52^1(X1, active(X2)) -> U52^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (39) YES ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: U51^1(X1, mark(X2)) -> U51^1(X1, X2) U51^1(mark(X1), X2) -> U51^1(X1, X2) U51^1(active(X1), X2) -> U51^1(X1, X2) U51^1(X1, active(X2)) -> U51^1(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (41) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: U51^1(X1, mark(X2)) -> U51^1(X1, X2) U51^1(mark(X1), X2) -> U51^1(X1, X2) U51^1(active(X1), X2) -> U51^1(X1, X2) U51^1(X1, active(X2)) -> U51^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (43) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U51^1(X1, mark(X2)) -> U51^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U51^1(mark(X1), X2) -> U51^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U51^1(active(X1), X2) -> U51^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U51^1(X1, active(X2)) -> U51^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (44) YES ---------------------------------------- (45) Obligation: Q DP problem: The TRS P consists of the following rules: U41^1(active(X)) -> U41^1(X) U41^1(mark(X)) -> U41^1(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (46) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (47) Obligation: Q DP problem: The TRS P consists of the following rules: U41^1(active(X)) -> U41^1(X) U41^1(mark(X)) -> U41^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (48) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U41^1(active(X)) -> U41^1(X) The graph contains the following edges 1 > 1 *U41^1(mark(X)) -> U41^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (49) YES ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: U32^1(active(X)) -> U32^1(X) U32^1(mark(X)) -> U32^1(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (51) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: U32^1(active(X)) -> U32^1(X) U32^1(mark(X)) -> U32^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (53) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U32^1(active(X)) -> U32^1(X) The graph contains the following edges 1 > 1 *U32^1(mark(X)) -> U32^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (54) YES ---------------------------------------- (55) Obligation: Q DP problem: The TRS P consists of the following rules: U31^1(X1, mark(X2)) -> U31^1(X1, X2) U31^1(mark(X1), X2) -> U31^1(X1, X2) U31^1(active(X1), X2) -> U31^1(X1, X2) U31^1(X1, active(X2)) -> U31^1(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (56) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (57) Obligation: Q DP problem: The TRS P consists of the following rules: U31^1(X1, mark(X2)) -> U31^1(X1, X2) U31^1(mark(X1), X2) -> U31^1(X1, X2) U31^1(active(X1), X2) -> U31^1(X1, X2) U31^1(X1, active(X2)) -> U31^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (58) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U31^1(X1, mark(X2)) -> U31^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U31^1(mark(X1), X2) -> U31^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U31^1(active(X1), X2) -> U31^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U31^1(X1, active(X2)) -> U31^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (59) YES ---------------------------------------- (60) Obligation: Q DP problem: The TRS P consists of the following rules: U23^1(active(X)) -> U23^1(X) U23^1(mark(X)) -> U23^1(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (61) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (62) Obligation: Q DP problem: The TRS P consists of the following rules: U23^1(active(X)) -> U23^1(X) U23^1(mark(X)) -> U23^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (63) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U23^1(active(X)) -> U23^1(X) The graph contains the following edges 1 > 1 *U23^1(mark(X)) -> U23^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (64) YES ---------------------------------------- (65) Obligation: Q DP problem: The TRS P consists of the following rules: U22^1(X1, mark(X2)) -> U22^1(X1, X2) U22^1(mark(X1), X2) -> U22^1(X1, X2) U22^1(active(X1), X2) -> U22^1(X1, X2) U22^1(X1, active(X2)) -> U22^1(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (66) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (67) Obligation: Q DP problem: The TRS P consists of the following rules: U22^1(X1, mark(X2)) -> U22^1(X1, X2) U22^1(mark(X1), X2) -> U22^1(X1, X2) U22^1(active(X1), X2) -> U22^1(X1, X2) U22^1(X1, active(X2)) -> U22^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (68) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U22^1(X1, mark(X2)) -> U22^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U22^1(mark(X1), X2) -> U22^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U22^1(active(X1), X2) -> U22^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U22^1(X1, active(X2)) -> U22^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (69) YES ---------------------------------------- (70) Obligation: Q DP problem: The TRS P consists of the following rules: U21^1(X1, mark(X2)) -> U21^1(X1, X2) U21^1(mark(X1), X2) -> U21^1(X1, X2) U21^1(active(X1), X2) -> U21^1(X1, X2) U21^1(X1, active(X2)) -> U21^1(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (71) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (72) Obligation: Q DP problem: The TRS P consists of the following rules: U21^1(X1, mark(X2)) -> U21^1(X1, X2) U21^1(mark(X1), X2) -> U21^1(X1, X2) U21^1(active(X1), X2) -> U21^1(X1, X2) U21^1(X1, active(X2)) -> U21^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (73) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U21^1(X1, mark(X2)) -> U21^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U21^1(mark(X1), X2) -> U21^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U21^1(active(X1), X2) -> U21^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U21^1(X1, active(X2)) -> U21^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (74) YES ---------------------------------------- (75) Obligation: Q DP problem: The TRS P consists of the following rules: U16^1(active(X)) -> U16^1(X) U16^1(mark(X)) -> U16^1(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (76) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (77) Obligation: Q DP problem: The TRS P consists of the following rules: U16^1(active(X)) -> U16^1(X) U16^1(mark(X)) -> U16^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (78) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U16^1(active(X)) -> U16^1(X) The graph contains the following edges 1 > 1 *U16^1(mark(X)) -> U16^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (79) YES ---------------------------------------- (80) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT(active(X)) -> ISNAT(X) ISNAT(mark(X)) -> ISNAT(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (81) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (82) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT(active(X)) -> ISNAT(X) ISNAT(mark(X)) -> ISNAT(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (83) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *ISNAT(active(X)) -> ISNAT(X) The graph contains the following edges 1 > 1 *ISNAT(mark(X)) -> ISNAT(X) The graph contains the following edges 1 > 1 ---------------------------------------- (84) YES ---------------------------------------- (85) Obligation: Q DP problem: The TRS P consists of the following rules: U15^1(X1, mark(X2)) -> U15^1(X1, X2) U15^1(mark(X1), X2) -> U15^1(X1, X2) U15^1(active(X1), X2) -> U15^1(X1, X2) U15^1(X1, active(X2)) -> U15^1(X1, X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (86) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (87) Obligation: Q DP problem: The TRS P consists of the following rules: U15^1(X1, mark(X2)) -> U15^1(X1, X2) U15^1(mark(X1), X2) -> U15^1(X1, X2) U15^1(active(X1), X2) -> U15^1(X1, X2) U15^1(X1, active(X2)) -> U15^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (88) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U15^1(X1, mark(X2)) -> U15^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U15^1(mark(X1), X2) -> U15^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U15^1(active(X1), X2) -> U15^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U15^1(X1, active(X2)) -> U15^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (89) YES ---------------------------------------- (90) Obligation: Q DP problem: The TRS P consists of the following rules: U14^1(X1, mark(X2), X3) -> U14^1(X1, X2, X3) U14^1(mark(X1), X2, X3) -> U14^1(X1, X2, X3) U14^1(X1, X2, mark(X3)) -> U14^1(X1, X2, X3) U14^1(active(X1), X2, X3) -> U14^1(X1, X2, X3) U14^1(X1, active(X2), X3) -> U14^1(X1, X2, X3) U14^1(X1, X2, active(X3)) -> U14^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (91) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (92) Obligation: Q DP problem: The TRS P consists of the following rules: U14^1(X1, mark(X2), X3) -> U14^1(X1, X2, X3) U14^1(mark(X1), X2, X3) -> U14^1(X1, X2, X3) U14^1(X1, X2, mark(X3)) -> U14^1(X1, X2, X3) U14^1(active(X1), X2, X3) -> U14^1(X1, X2, X3) U14^1(X1, active(X2), X3) -> U14^1(X1, X2, X3) U14^1(X1, X2, active(X3)) -> U14^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (93) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U14^1(X1, mark(X2), X3) -> U14^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U14^1(mark(X1), X2, X3) -> U14^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U14^1(X1, X2, mark(X3)) -> U14^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U14^1(active(X1), X2, X3) -> U14^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U14^1(X1, active(X2), X3) -> U14^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U14^1(X1, X2, active(X3)) -> U14^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (94) YES ---------------------------------------- (95) Obligation: Q DP problem: The TRS P consists of the following rules: U13^1(X1, mark(X2), X3) -> U13^1(X1, X2, X3) U13^1(mark(X1), X2, X3) -> U13^1(X1, X2, X3) U13^1(X1, X2, mark(X3)) -> U13^1(X1, X2, X3) U13^1(active(X1), X2, X3) -> U13^1(X1, X2, X3) U13^1(X1, active(X2), X3) -> U13^1(X1, X2, X3) U13^1(X1, X2, active(X3)) -> U13^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (96) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (97) Obligation: Q DP problem: The TRS P consists of the following rules: U13^1(X1, mark(X2), X3) -> U13^1(X1, X2, X3) U13^1(mark(X1), X2, X3) -> U13^1(X1, X2, X3) U13^1(X1, X2, mark(X3)) -> U13^1(X1, X2, X3) U13^1(active(X1), X2, X3) -> U13^1(X1, X2, X3) U13^1(X1, active(X2), X3) -> U13^1(X1, X2, X3) U13^1(X1, X2, active(X3)) -> U13^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (98) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U13^1(X1, mark(X2), X3) -> U13^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U13^1(mark(X1), X2, X3) -> U13^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U13^1(X1, X2, mark(X3)) -> U13^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U13^1(active(X1), X2, X3) -> U13^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U13^1(X1, active(X2), X3) -> U13^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U13^1(X1, X2, active(X3)) -> U13^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (99) YES ---------------------------------------- (100) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATKIND(active(X)) -> ISNATKIND(X) ISNATKIND(mark(X)) -> ISNATKIND(X) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (101) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (102) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATKIND(active(X)) -> ISNATKIND(X) ISNATKIND(mark(X)) -> ISNATKIND(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (103) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *ISNATKIND(active(X)) -> ISNATKIND(X) The graph contains the following edges 1 > 1 *ISNATKIND(mark(X)) -> ISNATKIND(X) The graph contains the following edges 1 > 1 ---------------------------------------- (104) YES ---------------------------------------- (105) Obligation: Q DP problem: The TRS P consists of the following rules: U12^1(X1, mark(X2), X3) -> U12^1(X1, X2, X3) U12^1(mark(X1), X2, X3) -> U12^1(X1, X2, X3) U12^1(X1, X2, mark(X3)) -> U12^1(X1, X2, X3) U12^1(active(X1), X2, X3) -> U12^1(X1, X2, X3) U12^1(X1, active(X2), X3) -> U12^1(X1, X2, X3) U12^1(X1, X2, active(X3)) -> U12^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (106) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (107) Obligation: Q DP problem: The TRS P consists of the following rules: U12^1(X1, mark(X2), X3) -> U12^1(X1, X2, X3) U12^1(mark(X1), X2, X3) -> U12^1(X1, X2, X3) U12^1(X1, X2, mark(X3)) -> U12^1(X1, X2, X3) U12^1(active(X1), X2, X3) -> U12^1(X1, X2, X3) U12^1(X1, active(X2), X3) -> U12^1(X1, X2, X3) U12^1(X1, X2, active(X3)) -> U12^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (108) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U12^1(X1, mark(X2), X3) -> U12^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U12^1(mark(X1), X2, X3) -> U12^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U12^1(X1, X2, mark(X3)) -> U12^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U12^1(active(X1), X2, X3) -> U12^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U12^1(X1, active(X2), X3) -> U12^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U12^1(X1, X2, active(X3)) -> U12^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (109) YES ---------------------------------------- (110) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(X1, mark(X2), X3) -> U11^1(X1, X2, X3) U11^1(mark(X1), X2, X3) -> U11^1(X1, X2, X3) U11^1(X1, X2, mark(X3)) -> U11^1(X1, X2, X3) U11^1(active(X1), X2, X3) -> U11^1(X1, X2, X3) U11^1(X1, active(X2), X3) -> U11^1(X1, X2, X3) U11^1(X1, X2, active(X3)) -> U11^1(X1, X2, X3) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (111) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (112) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(X1, mark(X2), X3) -> U11^1(X1, X2, X3) U11^1(mark(X1), X2, X3) -> U11^1(X1, X2, X3) U11^1(X1, X2, mark(X3)) -> U11^1(X1, X2, X3) U11^1(active(X1), X2, X3) -> U11^1(X1, X2, X3) U11^1(X1, active(X2), X3) -> U11^1(X1, X2, X3) U11^1(X1, X2, active(X3)) -> U11^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (113) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *U11^1(X1, mark(X2), X3) -> U11^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U11^1(mark(X1), X2, X3) -> U11^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U11^1(X1, X2, mark(X3)) -> U11^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U11^1(active(X1), X2, X3) -> U11^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U11^1(X1, active(X2), X3) -> U11^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U11^1(X1, X2, active(X3)) -> U11^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (114) YES ---------------------------------------- (115) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U16(X)) -> ACTIVE(U16(mark(X))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> ACTIVE(U23(mark(X))) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> ACTIVE(U32(mark(X))) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> ACTIVE(U41(mark(X))) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) ACTIVE(plus(N, 0)) -> MARK(U51(isNat(N), N)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> ACTIVE(s(mark(X))) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (116) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U23(X)) -> ACTIVE(U23(mark(X))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 2 POL( U12_3(x_1, ..., x_3) ) = 2 POL( U13_3(x_1, ..., x_3) ) = 2 POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = 2 POL( U16_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U23_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_1(x_1) ) = 2 POL( U41_1(x_1) ) = 2 POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = 2 POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( plus_2(x_1, x_2) ) = 2 POL( s_1(x_1) ) = 2 POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, -2} POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (117) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U16(X)) -> ACTIVE(U16(mark(X))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> ACTIVE(U32(mark(X))) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> ACTIVE(U41(mark(X))) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) ACTIVE(plus(N, 0)) -> MARK(U51(isNat(N), N)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> ACTIVE(s(mark(X))) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (118) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U32(X)) -> ACTIVE(U32(mark(X))) MARK(U41(X)) -> ACTIVE(U41(mark(X))) MARK(s(X)) -> ACTIVE(s(mark(X))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 POL( U11_3(x_1, ..., x_3) ) = 2 POL( U12_3(x_1, ..., x_3) ) = 2 POL( U13_3(x_1, ..., x_3) ) = 2 POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = 2 POL( U16_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U31_2(x_1, x_2) ) = 2 POL( U32_1(x_1) ) = max{0, -2} POL( U41_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = 2 POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( plus_2(x_1, x_2) ) = 2 POL( s_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 0 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U23_1(x_1) ) = 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (119) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U16(X)) -> ACTIVE(U16(mark(X))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) ACTIVE(plus(N, 0)) -> MARK(U51(isNat(N), N)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (120) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U16(X)) -> ACTIVE(U16(mark(X))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 POL( U11_3(x_1, ..., x_3) ) = 2 POL( U12_3(x_1, ..., x_3) ) = 2 POL( U13_3(x_1, ..., x_3) ) = 2 POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = 2 POL( U16_1(x_1) ) = 1 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U31_2(x_1, x_2) ) = 2 POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = 2 POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( plus_2(x_1, x_2) ) = 2 POL( mark_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = max{0, -2} POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U23_1(x_1) ) = 2 POL( U32_1(x_1) ) = 1 POL( U41_1(x_1) ) = x_1 POL( s_1(x_1) ) = max{0, -2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (121) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) ACTIVE(plus(N, 0)) -> MARK(U51(isNat(N), N)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (122) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(plus(N, 0)) -> MARK(U51(isNat(N), N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial interpretation [POLO]: POL(0) = 1 POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(U11(x_1, x_2, x_3)) = x_1 POL(U12(x_1, x_2, x_3)) = x_1 POL(U13(x_1, x_2, x_3)) = x_1 POL(U14(x_1, x_2, x_3)) = x_1 POL(U15(x_1, x_2)) = x_1 POL(U16(x_1)) = x_1 POL(U21(x_1, x_2)) = x_1 POL(U22(x_1, x_2)) = x_1 POL(U23(x_1)) = x_1 POL(U31(x_1, x_2)) = x_1 POL(U32(x_1)) = x_1 POL(U41(x_1)) = x_1 POL(U51(x_1, x_2)) = x_1 + x_2 POL(U52(x_1, x_2)) = x_1 + x_2 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U62(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U63(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U64(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(active(x_1)) = x_1 POL(isNat(x_1)) = 0 POL(isNatKind(x_1)) = 0 POL(mark(x_1)) = x_1 POL(plus(x_1, x_2)) = x_1 + x_2 POL(s(x_1)) = x_1 POL(tt) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) ---------------------------------------- (123) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (124) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U51(tt, N)) -> MARK(U52(isNatKind(N), N)) MARK(U51(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial interpretation [POLO]: POL(0) = 1 POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(U11(x_1, x_2, x_3)) = x_1 POL(U12(x_1, x_2, x_3)) = x_1 POL(U13(x_1, x_2, x_3)) = x_1 POL(U14(x_1, x_2, x_3)) = x_1 POL(U15(x_1, x_2)) = x_1 POL(U16(x_1)) = x_1 POL(U21(x_1, x_2)) = x_1 POL(U22(x_1, x_2)) = x_1 POL(U23(x_1)) = x_1 POL(U31(x_1, x_2)) = x_1 POL(U32(x_1)) = x_1 POL(U41(x_1)) = x_1 POL(U51(x_1, x_2)) = 1 + x_1 + x_2 POL(U52(x_1, x_2)) = x_1 + x_2 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U62(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U63(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U64(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(active(x_1)) = x_1 POL(isNat(x_1)) = 0 POL(isNatKind(x_1)) = 0 POL(mark(x_1)) = x_1 POL(plus(x_1, x_2)) = x_1 + x_2 POL(s(x_1)) = x_1 POL(tt) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) ---------------------------------------- (125) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (126) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = 1 POL(U11(x_1, x_2, x_3)) = 1 POL(U12(x_1, x_2, x_3)) = 1 POL(U13(x_1, x_2, x_3)) = 1 POL(U14(x_1, x_2, x_3)) = 1 POL(U15(x_1, x_2)) = 1 POL(U16(x_1)) = 0 POL(U21(x_1, x_2)) = 1 POL(U22(x_1, x_2)) = 1 POL(U23(x_1)) = 0 POL(U31(x_1, x_2)) = 1 POL(U32(x_1)) = 0 POL(U41(x_1)) = 0 POL(U51(x_1, x_2)) = 0 POL(U52(x_1, x_2)) = 1 POL(U61(x_1, x_2, x_3)) = 1 POL(U62(x_1, x_2, x_3)) = 1 POL(U63(x_1, x_2, x_3)) = 1 POL(U64(x_1, x_2, x_3)) = 1 POL(active(x_1)) = 0 POL(isNat(x_1)) = 1 POL(isNatKind(x_1)) = 1 POL(mark(x_1)) = 0 POL(plus(x_1, x_2)) = 1 POL(s(x_1)) = 0 POL(tt) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (127) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U52(tt, N)) -> MARK(N) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X1, X2)) -> MARK(X1) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (128) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U52(tt, N)) -> MARK(N) MARK(U52(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial interpretation [POLO]: POL(0) = 1 POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(U11(x_1, x_2, x_3)) = x_1 POL(U12(x_1, x_2, x_3)) = x_1 POL(U13(x_1, x_2, x_3)) = x_1 POL(U14(x_1, x_2, x_3)) = x_1 POL(U15(x_1, x_2)) = x_1 POL(U16(x_1)) = x_1 POL(U21(x_1, x_2)) = x_1 POL(U22(x_1, x_2)) = x_1 POL(U23(x_1)) = x_1 POL(U31(x_1, x_2)) = x_1 POL(U32(x_1)) = x_1 POL(U41(x_1)) = x_1 POL(U51(x_1, x_2)) = 1 + x_2 POL(U52(x_1, x_2)) = 1 + x_1 + x_2 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U62(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U63(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U64(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(active(x_1)) = x_1 POL(isNat(x_1)) = 0 POL(isNatKind(x_1)) = 0 POL(mark(x_1)) = x_1 POL(plus(x_1, x_2)) = x_1 + x_2 POL(s(x_1)) = x_1 POL(tt) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) ---------------------------------------- (129) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (130) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U52(X1, X2)) -> ACTIVE(U52(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = 1 POL(U11(x_1, x_2, x_3)) = 1 POL(U12(x_1, x_2, x_3)) = 1 POL(U13(x_1, x_2, x_3)) = 1 POL(U14(x_1, x_2, x_3)) = 1 POL(U15(x_1, x_2)) = 1 POL(U16(x_1)) = 0 POL(U21(x_1, x_2)) = 1 POL(U22(x_1, x_2)) = 1 POL(U23(x_1)) = 0 POL(U31(x_1, x_2)) = 1 POL(U32(x_1)) = 0 POL(U41(x_1)) = 0 POL(U51(x_1, x_2)) = 0 POL(U52(x_1, x_2)) = 0 POL(U61(x_1, x_2, x_3)) = 1 POL(U62(x_1, x_2, x_3)) = 1 POL(U63(x_1, x_2, x_3)) = 1 POL(U64(x_1, x_2, x_3)) = 1 POL(active(x_1)) = 0 POL(isNat(x_1)) = 1 POL(isNatKind(x_1)) = 1 POL(mark(x_1)) = 0 POL(plus(x_1, x_2)) = 1 POL(s(x_1)) = 0 POL(tt) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (131) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (132) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(s(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(U11(x_1, x_2, x_3)) = x_1 POL(U12(x_1, x_2, x_3)) = x_1 POL(U13(x_1, x_2, x_3)) = x_1 POL(U14(x_1, x_2, x_3)) = x_1 POL(U15(x_1, x_2)) = x_1 POL(U16(x_1)) = x_1 POL(U21(x_1, x_2)) = x_1 POL(U22(x_1, x_2)) = x_1 POL(U23(x_1)) = x_1 POL(U31(x_1, x_2)) = x_1 POL(U32(x_1)) = x_1 POL(U41(x_1)) = x_1 POL(U51(x_1, x_2)) = x_2 POL(U52(x_1, x_2)) = x_2 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U62(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U63(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U64(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(active(x_1)) = x_1 POL(isNat(x_1)) = 1 POL(isNatKind(x_1)) = 1 POL(mark(x_1)) = x_1 POL(plus(x_1, x_2)) = x_1 + x_2 POL(s(x_1)) = 1 + x_1 POL(tt) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) ---------------------------------------- (133) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (134) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(plus(X1, X2)) -> ACTIVE(plus(mark(X1), mark(X2))) MARK(plus(X1, X2)) -> MARK(X1) MARK(plus(X1, X2)) -> MARK(X2) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( U21_2(x_1, x_2) ) = x_1 + 1 POL( U22_2(x_1, x_2) ) = x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U61_3(x_1, ..., x_3) ) = x_1 + 1 POL( U62_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U63_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U64_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( plus_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( mark_1(x_1) ) = x_1 POL( active_1(x_1) ) = x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U23_1(x_1) ) = 2x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U52_2(x_1, x_2) ) = x_2 + 2 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 0 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(active(X)) -> s(X) s(mark(X)) -> s(X) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (135) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (136) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(plus(N, s(M))) -> MARK(U61(isNat(M), M, N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 2 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = 0 POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U31_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = 2 POL( U62_3(x_1, ..., x_3) ) = max{0, -2} POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, -2} POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = max{0, 2x_1 - 2} POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( U32_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U41_1(x_1) ) = x_1 + 2 POL( s_1(x_1) ) = x_1 + 2 POL( plus_2(x_1, x_2) ) = 2x_2 + 1 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (137) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U61(X1, X2, X3)) -> MARK(X1) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (138) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) MARK(U61(X1, X2, X3)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = x_1 + 1 POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U61_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2x_3 + 2 POL( U62_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U63_3(x_1, ..., x_3) ) = x_1 + 1 POL( U64_3(x_1, ..., x_3) ) = x_1 + 1 POL( mark_1(x_1) ) = x_1 + 2 POL( active_1(x_1) ) = x_1 POL( tt ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = 2x_1 + 1 POL( U23_1(x_1) ) = 2x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 0 POL( plus_2(x_1, x_2) ) = 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(active(X)) -> s(X) s(mark(X)) -> s(X) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (139) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (140) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U61(tt, M, N)) -> MARK(U62(isNatKind(M), M, N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 0 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = max{0, -2} POL( U15_2(x_1, x_2) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 1 POL( U31_2(x_1, x_2) ) = 1 POL( U62_3(x_1, ..., x_3) ) = max{0, -2} POL( U63_3(x_1, ..., x_3) ) = max{0, -2} POL( U64_3(x_1, ..., x_3) ) = max{0, -2} POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 1 POL( U16_1(x_1) ) = max{0, 2x_1 - 2} POL( U23_1(x_1) ) = max{0, -2} POL( U32_1(x_1) ) = max{0, 2x_1 - 2} POL( U51_2(x_1, x_2) ) = 1 POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = x_1 + 2 POL( U41_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = x_1 + 1 POL( plus_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( 0 ) = 2 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) ---------------------------------------- (141) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U62(X1, X2, X3)) -> MARK(X1) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (142) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U62(X1, X2, X3)) -> ACTIVE(U62(mark(X1), X2, X3)) MARK(U62(X1, X2, X3)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U15_2(x_1, x_2) ) = x_1 + 1 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U62_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2x_3 + 2 POL( U63_3(x_1, ..., x_3) ) = x_1 + 1 POL( U64_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( mark_1(x_1) ) = x_1 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U23_1(x_1) ) = 2x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U61_3(x_1, ..., x_3) ) = 2x_1 + 2x_3 + 2 POL( U41_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = 0 POL( plus_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(active(X)) -> s(X) s(mark(X)) -> s(X) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (143) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (144) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U62(tt, M, N)) -> MARK(U63(isNat(N), M, N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 2 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = 2 POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = 2 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = 2 POL( U63_3(x_1, ..., x_3) ) = max{0, -2} POL( U64_3(x_1, ..., x_3) ) = 2 POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = 2 POL( tt ) = 2 POL( isNatKind_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U16_1(x_1) ) = x_1 POL( U23_1(x_1) ) = max{0, x_1 - 1} POL( U32_1(x_1) ) = 2 POL( U51_2(x_1, x_2) ) = x_1 + 2 POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, 2x_1 - 1} POL( U41_1(x_1) ) = 0 POL( s_1(x_1) ) = max{0, x_1 - 1} POL( plus_2(x_1, x_2) ) = max{0, x_1 - 1} POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) ---------------------------------------- (145) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (146) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U63(X1, X2, X3)) -> ACTIVE(U63(mark(X1), X2, X3)) MARK(U63(X1, X2, X3)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U63_3(x_1, ..., x_3) ) = 2x_1 + x_2 + x_3 + 2 POL( U64_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = 2x_1 + 1 POL( U23_1(x_1) ) = x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U62_3(x_1, ..., x_3) ) = 1 POL( U41_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = max{0, -2} POL( plus_2(x_1, x_2) ) = x_1 + 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(active(X)) -> s(X) s(mark(X)) -> s(X) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (147) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (148) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U63(tt, M, N)) -> MARK(U64(isNatKind(N), M, N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = max{0, -2} POL( U12_3(x_1, ..., x_3) ) = 2 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U31_2(x_1, x_2) ) = 2 POL( U64_3(x_1, ..., x_3) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2 POL( tt ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 2 POL( U16_1(x_1) ) = max{0, x_1 - 1} POL( U23_1(x_1) ) = max{0, -2} POL( U32_1(x_1) ) = max{0, x_1 - 1} POL( U51_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U41_1(x_1) ) = 0 POL( s_1(x_1) ) = max{0, x_1 - 1} POL( plus_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) ---------------------------------------- (149) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (150) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U64(X1, X2, X3)) -> ACTIVE(U64(mark(X1), X2, X3)) MARK(U64(X1, X2, X3)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U15_2(x_1, x_2) ) = x_1 + 1 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U64_3(x_1, ..., x_3) ) = x_1 + x_2 + x_3 + 2 POL( mark_1(x_1) ) = 2x_1 + 2 POL( active_1(x_1) ) = x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U23_1(x_1) ) = x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, -2} POL( U61_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = 2x_1 + x_2 + x_3 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, -2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (151) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (152) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U64(tt, M, N)) -> MARK(s(plus(N, M))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = max{0, -2} POL( U12_3(x_1, ..., x_3) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = max{0, -2} POL( U15_2(x_1, x_2) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 1 POL( U31_2(x_1, x_2) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, x_1 - 2} POL( active_1(x_1) ) = max{0, x_1 - 2} POL( tt ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = max{0, 2x_1 - 2} POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( U32_1(x_1) ) = max{0, 2x_1 - 2} POL( U51_2(x_1, x_2) ) = x_1 + x_2 POL( U52_2(x_1, x_2) ) = x_1 + 2 POL( U61_3(x_1, ..., x_3) ) = max{0, x_2 + 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = x_1 + x_2 + 2x_3 + 2 POL( U64_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U41_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( plus_2(x_1, x_2) ) = 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (153) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (154) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U13_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U15_2(x_1, x_2) ) = x_1 + 2x_2 POL( U21_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U22_2(x_1, x_2) ) = x_1 + 2x_2 POL( U31_2(x_1, x_2) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( active_1(x_1) ) = x_1 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 2x_1 POL( U16_1(x_1) ) = x_1 POL( U23_1(x_1) ) = x_1 POL( U32_1(x_1) ) = x_1 POL( U51_2(x_1, x_2) ) = 2x_2 + 2 POL( U52_2(x_1, x_2) ) = 2x_2 + 2 POL( U61_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U62_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2x_3 + 2 POL( U63_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U64_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U41_1(x_1) ) = 2x_1 POL( s_1(x_1) ) = x_1 + 1 POL( plus_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( 0 ) = 2 POL( MARK_1(x_1) ) = x_1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (155) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (156) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = x_1 + 1 POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( U21_2(x_1, x_2) ) = x_1 + 2 POL( U22_2(x_1, x_2) ) = x_1 + 1 POL( U31_2(x_1, x_2) ) = x_1 + 1 POL( mark_1(x_1) ) = 2x_1 + 2 POL( active_1(x_1) ) = 2x_1 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U23_1(x_1) ) = x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = x_2 + x_3 POL( U64_3(x_1, ..., x_3) ) = x_1 + 2 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = x_1 + 2 POL( plus_2(x_1, x_2) ) = max{0, -2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (157) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (158) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = max{0, -2} POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = 1 POL( U14_3(x_1, ..., x_3) ) = max{0, -2} POL( U15_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( U32_1(x_1) ) = max{0, 2x_1 - 2} POL( U51_2(x_1, x_2) ) = x_2 + 2 POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U64_3(x_1, ..., x_3) ) = max{0, x_2 + 2x_3 - 2} POL( U41_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = max{0, x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, x_2 - 2} POL( 0 ) = 2 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (159) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (160) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = x_1 + 1 POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U21_2(x_1, x_2) ) = 2 POL( U23_1(x_1) ) = x_1 + 1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_3 - 2} POL( U41_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = max{0, x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( 0 ) = 1 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (161) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (162) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 1 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = 1 POL( U15_2(x_1, x_2) ) = 1 POL( U31_2(x_1, x_2) ) = 1 POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 1 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U22_2(x_1, x_2) ) = x_2 + 2 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( U32_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U61_3(x_1, ..., x_3) ) = 2 POL( U62_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 + x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_3 - 2} POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U41_1(x_1) ) = 0 POL( s_1(x_1) ) = 2 POL( plus_2(x_1, x_2) ) = x_2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (163) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U23(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (164) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U23(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U13_3(x_1, ..., x_3) ) = x_1 + 1 POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U15_2(x_1, x_2) ) = x_1 + 1 POL( U31_2(x_1, x_2) ) = x_1 + 1 POL( mark_1(x_1) ) = x_1 + 2 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U21_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U22_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = x_1 + 2 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = x_1 + 2 POL( U62_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 + 2x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = x_1 POL( U64_3(x_1, ..., x_3) ) = x_2 + x_3 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = x_1 + 2 POL( plus_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (165) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(U12(X1, X2, X3)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (166) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U11(X1, X2, X3)) -> MARK(X1) MARK(U12(X1, X2, X3)) -> MARK(X1) ACTIVE(U13(tt, V1, V2)) -> MARK(U14(isNatKind(V2), V1, V2)) MARK(U13(X1, X2, X3)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 + 2 POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 + 2 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 + 2 POL( U13_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 + 2 POL( U14_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2x_3 POL( U15_2(x_1, x_2) ) = x_1 + 2x_2 POL( U31_2(x_1, x_2) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( active_1(x_1) ) = x_1 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 2x_1 POL( U16_1(x_1) ) = x_1 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U23_1(x_1) ) = max{0, -2} POL( U32_1(x_1) ) = x_1 POL( U51_2(x_1, x_2) ) = x_2 + 2 POL( U52_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( U61_3(x_1, ..., x_3) ) = x_3 + 2 POL( U62_3(x_1, ..., x_3) ) = x_3 + 2 POL( U63_3(x_1, ..., x_3) ) = x_3 + 2 POL( U64_3(x_1, ..., x_3) ) = x_3 + 2 POL( U41_1(x_1) ) = 2x_1 POL( s_1(x_1) ) = 1 POL( plus_2(x_1, x_2) ) = x_1 + 2x_2 + 1 POL( 0 ) = 1 POL( MARK_1(x_1) ) = x_1 + 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (167) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U14(X1, X2, X3)) -> MARK(X1) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (168) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U14(X1, X2, X3)) -> ACTIVE(U14(mark(X1), X2, X3)) MARK(U14(X1, X2, X3)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = x_1 + 1 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = 2x_1 + 1 POL( U21_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( U22_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U23_1(x_1) ) = 2 POL( U32_1(x_1) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U62_3(x_1, ..., x_3) ) = x_2 + x_3 POL( U63_3(x_1, ..., x_3) ) = x_1 + 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 0 POL( plus_2(x_1, x_2) ) = x_1 + x_2 POL( 0 ) = 1 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (169) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (170) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U14(tt, V1, V2)) -> MARK(U15(isNat(V1), V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 1 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U15_2(x_1, x_2) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = 1 POL( mark_1(x_1) ) = max{0, 2x_1 - 1} POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( U14_3(x_1, ..., x_3) ) = x_3 + 2 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = max{0, x_1 + x_2 - 1} POL( U22_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U23_1(x_1) ) = max{0, x_1 - 1} POL( U32_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U52_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 1} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U41_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, x_2 - 2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (171) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (172) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U13(X1, X2, X3)) -> ACTIVE(U13(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 1} POL( U11_3(x_1, ..., x_3) ) = 1 POL( U12_3(x_1, ..., x_3) ) = 1 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U15_2(x_1, x_2) ) = 1 POL( U31_2(x_1, x_2) ) = 1 POL( mark_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 1 POL( U14_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 - 2} POL( isNat_1(x_1) ) = 1 POL( U16_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U22_2(x_1, x_2) ) = x_1 POL( U23_1(x_1) ) = max{0, -2} POL( U32_1(x_1) ) = 0 POL( U51_2(x_1, x_2) ) = 2x_2 + 2 POL( U52_2(x_1, x_2) ) = 2x_2 + 2 POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 - 2} POL( U63_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U41_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = 2 POL( plus_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( 0 ) = 0 POL( MARK_1(x_1) ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (173) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (174) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U15(X1, X2)) -> ACTIVE(U15(mark(X1), X2)) MARK(U15(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 1 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U15_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = x_1 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = 2 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 1 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U23_1(x_1) ) = 2 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 + 2x_3 - 2} POL( U64_3(x_1, ..., x_3) ) = 2 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = max{0, x_1 - 2} POL( plus_2(x_1, x_2) ) = 2x_1 + 2 POL( 0 ) = 1 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (175) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (176) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U15(tt, V2)) -> MARK(U16(isNat(V2))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2x_1 POL( U11_3(x_1, ..., x_3) ) = 0 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = 0 POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = 2 POL( tt ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U14_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_2 - 1} POL( U15_2(x_1, x_2) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = max{0, x_1 - 2} POL( U21_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U22_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = 2 POL( U32_1(x_1) ) = max{0, 2x_1 - 2} POL( U51_2(x_1, x_2) ) = x_2 POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = x_3 POL( U62_3(x_1, ..., x_3) ) = x_1 POL( U63_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U41_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( 0 ) = 2 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (177) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U16(X)) -> MARK(X) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (178) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U16(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 0 POL( U12_3(x_1, ..., x_3) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = x_1 POL( active_1(x_1) ) = x_1 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = 0 POL( U14_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U15_2(x_1, x_2) ) = 2x_2 + 2 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = x_1 + 2 POL( U21_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U22_2(x_1, x_2) ) = 2 POL( U23_1(x_1) ) = 2 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = 2 POL( U52_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_3 - 2} POL( U41_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = 2 POL( plus_2(x_1, x_2) ) = 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (179) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (180) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(isNat(X)) -> ACTIVE(isNat(X)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 1 POL( U12_3(x_1, ..., x_3) ) = 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 + 1 POL( active_1(x_1) ) = x_1 + 1 POL( tt ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U16_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U23_1(x_1) ) = x_1 POL( U32_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = max{0, x_2 + 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U64_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 2 POL( plus_2(x_1, x_2) ) = max{0, x_1 - 2} POL( 0 ) = 1 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (181) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (182) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNat(plus(V1, V2))) -> MARK(U11(isNatKind(V1), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 1 POL( U12_3(x_1, ..., x_3) ) = 1 POL( U31_2(x_1, x_2) ) = 1 POL( mark_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = max{0, -2} POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 1 POL( U13_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U14_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U15_2(x_1, x_2) ) = x_2 POL( isNat_1(x_1) ) = 2x_1 POL( U16_1(x_1) ) = max{0, x_1 - 2} POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = x_1 + 2 POL( U23_1(x_1) ) = max{0, x_1 - 2} POL( U32_1(x_1) ) = 0 POL( U51_2(x_1, x_2) ) = x_1 + 1 POL( U52_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U61_3(x_1, ..., x_3) ) = 2x_1 + x_3 + 2 POL( U62_3(x_1, ..., x_3) ) = x_2 + x_3 POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = x_2 + 2 POL( U41_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( plus_2(x_1, x_2) ) = 2x_2 + 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, -2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (183) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (184) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U11(X1, X2, X3)) -> ACTIVE(U11(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 0 POL( U11_3(x_1, ..., x_3) ) = 2 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = 2x_1 + 2 POL( tt ) = 1 POL( isNatKind_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_2 - 2} POL( U15_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNat_1(x_1) ) = x_1 POL( U16_1(x_1) ) = max{0, x_1 - 2} POL( U21_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U22_2(x_1, x_2) ) = 2x_2 + 2 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( U32_1(x_1) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U52_2(x_1, x_2) ) = 2x_2 + 2 POL( U61_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 - 2} POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = max{0, x_2 - 1} POL( U41_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 2 POL( plus_2(x_1, x_2) ) = x_1 + 2 POL( 0 ) = 1 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (185) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (186) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U11(tt, V1, V2)) -> MARK(U12(isNatKind(V1), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U12_3(x_1, ..., x_3) ) = 1 POL( U13_3(x_1, ..., x_3) ) = 2 POL( U31_2(x_1, x_2) ) = max{0, -2} POL( U32_1(x_1) ) = max{0, 2x_1 - 2} POL( U41_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatKind_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( tt ) = 2 POL( U14_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 - 2} POL( U15_2(x_1, x_2) ) = x_1 + x_2 POL( isNat_1(x_1) ) = 2 POL( U16_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U22_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = 2 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U52_2(x_1, x_2) ) = x_2 POL( U61_3(x_1, ..., x_3) ) = x_1 + x_2 + x_3 POL( U62_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( s_1(x_1) ) = max{0, x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( 0 ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (187) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (188) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U12(X1, X2, X3)) -> ACTIVE(U12(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U12_3(x_1, ..., x_3) ) = 2x_2 + x_3 + 2 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( mark_1(x_1) ) = x_1 POL( U11_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( active_1(x_1) ) = x_1 + 2 POL( tt ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, -2} POL( U14_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U15_2(x_1, x_2) ) = x_1 + x_2 + 2 POL( isNat_1(x_1) ) = 0 POL( U16_1(x_1) ) = max{0, x_1 - 2} POL( U21_2(x_1, x_2) ) = x_1 + 2 POL( U22_2(x_1, x_2) ) = 2x_2 + 2 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( U32_1(x_1) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U52_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = 2x_1 + x_2 + 2x_3 + 2 POL( U64_3(x_1, ..., x_3) ) = 2 POL( U41_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( plus_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( 0 ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (189) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (190) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U12(tt, V1, V2)) -> MARK(U13(isNatKind(V2), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = 0 POL( U13_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_3 - 2} POL( U31_2(x_1, x_2) ) = max{0, -2} POL( U32_1(x_1) ) = 2 POL( U41_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatKind_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( mark_1(x_1) ) = max{0, x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_2 + 2x_3 - 2} POL( tt ) = 2 POL( U12_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U14_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_3 - 2} POL( U15_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( isNat_1(x_1) ) = 2x_1 POL( U16_1(x_1) ) = max{0, 2x_1 - 2} POL( U21_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U22_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U23_1(x_1) ) = x_1 + 1 POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U52_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U61_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = 2 POL( U63_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U64_3(x_1, ..., x_3) ) = 2 POL( s_1(x_1) ) = max{0, x_1 - 2} POL( plus_2(x_1, x_2) ) = max{0, x_1 - 2} POL( 0 ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (191) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (192) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U31(tt, V2)) -> MARK(U32(isNatKind(V2))) MARK(U31(X1, X2)) -> MARK(X1) ACTIVE(isNatKind(plus(V1, V2))) -> MARK(U31(isNatKind(V1), V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 + 2 POL( MARK_1(x_1) ) = x_1 + 2 POL( U31_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( U32_1(x_1) ) = x_1 POL( U41_1(x_1) ) = x_1 POL( isNatKind_1(x_1) ) = 2x_1 + 1 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U11_3(x_1, ..., x_3) ) = 2 POL( tt ) = 0 POL( U12_3(x_1, ..., x_3) ) = 2 POL( U13_3(x_1, ..., x_3) ) = 2 POL( U14_3(x_1, ..., x_3) ) = 2 POL( U15_2(x_1, x_2) ) = max{0, -2} POL( isNat_1(x_1) ) = 2 POL( U16_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U23_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2x_2 + 2 POL( U52_2(x_1, x_2) ) = 2x_2 POL( U61_3(x_1, ..., x_3) ) = x_2 + 2x_3 + 2 POL( U62_3(x_1, ..., x_3) ) = x_2 + 2x_3 + 2 POL( U63_3(x_1, ..., x_3) ) = x_2 + 2x_3 + 2 POL( U64_3(x_1, ..., x_3) ) = x_2 + 2x_3 + 2 POL( s_1(x_1) ) = x_1 POL( plus_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( 0 ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U32(active(X)) -> U32(X) U32(mark(X)) -> U32(X) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNat(X)) -> active(isNat(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U16(X)) -> active(U16(mark(X))) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U52(tt, N)) -> mark(N) mark(U23(X)) -> active(U23(mark(X))) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) mark(U32(X)) -> active(U32(mark(X))) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) mark(U41(X)) -> active(U41(mark(X))) active(U64(tt, M, N)) -> mark(s(plus(N, M))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) active(plus(N, 0)) -> mark(U51(isNat(N), N)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(tt) -> active(tt) mark(0) -> active(0) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) active(U16(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatKind(0)) -> mark(tt) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U15(X1, mark(X2)) -> U15(X1, X2) U15(mark(X1), X2) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) U16(active(X)) -> U16(X) U16(mark(X)) -> U16(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) plus(X1, mark(X2)) -> plus(X1, X2) plus(mark(X1), X2) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) ---------------------------------------- (193) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U32(X)) -> MARK(X) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (194) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U32(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Combined order from the following AFS and order. MARK(x1) = x1 isNatKind(x1) = isNatKind ACTIVE(x1) = x1 U31(x1, x2) = U31 U32(x1) = U32(x1) U41(x1) = x1 active(x1) = x1 mark(x1) = x1 Knuth-Bendix order [KBO] with precedence:trivial and weight map: U32_1=1 U31=2 isNatKind=1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) ---------------------------------------- (195) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (196) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = 2 POL( U41_1(x_1) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, x_1 - 2} POL( mark_1(x_1) ) = 1 POL( U31_2(x_1, x_2) ) = max{0, -2} POL( U11_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_2 + x_3 - 2} POL( tt ) = 0 POL( U12_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U13_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( U14_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U15_2(x_1, x_2) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U16_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U23_1(x_1) ) = 2x_1 + 1 POL( U32_1(x_1) ) = 2 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U52_2(x_1, x_2) ) = 2 POL( U61_3(x_1, ..., x_3) ) = max{0, x_2 + 2x_3 - 2} POL( U62_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( U63_3(x_1, ..., x_3) ) = 2 POL( U64_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( s_1(x_1) ) = 0 POL( plus_2(x_1, x_2) ) = x_1 + 2 POL( 0 ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (197) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) active(U15(tt, V2)) -> mark(U16(isNat(V2))) active(U16(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) active(U32(tt)) -> mark(tt) active(U41(tt)) -> mark(tt) active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) active(U52(tt, N)) -> mark(N) active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) active(U64(tt, M, N)) -> mark(s(plus(N, M))) active(isNat(0)) -> mark(tt) active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatKind(0)) -> mark(tt) active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) active(plus(N, 0)) -> mark(U51(isNat(N), N)) active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) mark(U11(X1, X2, X3)) -> active(U11(mark(X1), X2, X3)) mark(tt) -> active(tt) mark(U12(X1, X2, X3)) -> active(U12(mark(X1), X2, X3)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U13(X1, X2, X3)) -> active(U13(mark(X1), X2, X3)) mark(U14(X1, X2, X3)) -> active(U14(mark(X1), X2, X3)) mark(U15(X1, X2)) -> active(U15(mark(X1), X2)) mark(isNat(X)) -> active(isNat(X)) mark(U16(X)) -> active(U16(mark(X))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(U23(X)) -> active(U23(mark(X))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X)) -> active(U32(mark(X))) mark(U41(X)) -> active(U41(mark(X))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X1, X2)) -> active(U52(mark(X1), X2)) mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) mark(U62(X1, X2, X3)) -> active(U62(mark(X1), X2, X3)) mark(U63(X1, X2, X3)) -> active(U63(mark(X1), X2, X3)) mark(U64(X1, X2, X3)) -> active(U64(mark(X1), X2, X3)) mark(s(X)) -> active(s(mark(X))) mark(plus(X1, X2)) -> active(plus(mark(X1), mark(X2))) mark(0) -> active(0) U11(mark(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, mark(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, mark(X3)) -> U11(X1, X2, X3) U11(active(X1), X2, X3) -> U11(X1, X2, X3) U11(X1, active(X2), X3) -> U11(X1, X2, X3) U11(X1, X2, active(X3)) -> U11(X1, X2, X3) U12(mark(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, mark(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, mark(X3)) -> U12(X1, X2, X3) U12(active(X1), X2, X3) -> U12(X1, X2, X3) U12(X1, active(X2), X3) -> U12(X1, X2, X3) U12(X1, X2, active(X3)) -> U12(X1, X2, X3) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U13(mark(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, mark(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, mark(X3)) -> U13(X1, X2, X3) U13(active(X1), X2, X3) -> U13(X1, X2, X3) U13(X1, active(X2), X3) -> U13(X1, X2, X3) U13(X1, X2, active(X3)) -> U13(X1, X2, X3) U14(mark(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, mark(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, mark(X3)) -> U14(X1, X2, X3) U14(active(X1), X2, X3) -> U14(X1, X2, X3) U14(X1, active(X2), X3) -> U14(X1, X2, X3) U14(X1, X2, active(X3)) -> U14(X1, X2, X3) U15(mark(X1), X2) -> U15(X1, X2) U15(X1, mark(X2)) -> U15(X1, X2) U15(active(X1), X2) -> U15(X1, X2) U15(X1, active(X2)) -> U15(X1, X2) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U16(mark(X)) -> U16(X) U16(active(X)) -> U16(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X)) -> U32(X) U32(active(X)) -> U32(X) U41(mark(X)) -> U41(X) U41(active(X)) -> U41(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X1), X2) -> U52(X1, X2) U52(X1, mark(X2)) -> U52(X1, X2) U52(active(X1), X2) -> U52(X1, X2) U52(X1, active(X2)) -> U52(X1, X2) U61(mark(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, mark(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) U61(active(X1), X2, X3) -> U61(X1, X2, X3) U61(X1, active(X2), X3) -> U61(X1, X2, X3) U61(X1, X2, active(X3)) -> U61(X1, X2, X3) U62(mark(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, mark(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, mark(X3)) -> U62(X1, X2, X3) U62(active(X1), X2, X3) -> U62(X1, X2, X3) U62(X1, active(X2), X3) -> U62(X1, X2, X3) U62(X1, X2, active(X3)) -> U62(X1, X2, X3) U63(mark(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, mark(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, mark(X3)) -> U63(X1, X2, X3) U63(active(X1), X2, X3) -> U63(X1, X2, X3) U63(X1, active(X2), X3) -> U63(X1, X2, X3) U63(X1, X2, active(X3)) -> U63(X1, X2, X3) U64(mark(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, mark(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, mark(X3)) -> U64(X1, X2, X3) U64(active(X1), X2, X3) -> U64(X1, X2, X3) U64(X1, active(X2), X3) -> U64(X1, X2, X3) U64(X1, X2, active(X3)) -> U64(X1, X2, X3) s(mark(X)) -> s(X) s(active(X)) -> s(X) plus(mark(X1), X2) -> plus(X1, X2) plus(X1, mark(X2)) -> plus(X1, X2) plus(active(X1), X2) -> plus(X1, X2) plus(X1, active(X2)) -> plus(X1, X2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (198) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (199) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U41(X)) -> MARK(X) ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The TRS R consists of the following rules: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (200) UsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and 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: ACTIVE(isNatKind(s(V1))) -> MARK(U41(isNatKind(V1))) The following rules are removed from R: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U41(active(X)) -> U41(X) U41(mark(X)) -> U41(X) Used ordering: POLO with Polynomial interpretation [POLO]: POL(ACTIVE(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(U41(x_1)) = x_1 POL(active(x_1)) = 2*x_1 POL(isNatKind(x_1)) = 2*x_1 POL(mark(x_1)) = 2*x_1 POL(s(x_1)) = 2 + 2*x_1 ---------------------------------------- (201) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U41(X)) -> MARK(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (202) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (203) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U41(X)) -> MARK(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (204) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *MARK(U41(X)) -> MARK(X) The graph contains the following edges 1 > 1 ---------------------------------------- (205) YES