/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- Graph construction failed Graph construction failed Graph construction failed MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern fact(a,g) w.r.t. the given Prolog program could not be shown: (0) Prolog (1) IntegerArithmeticTransformerProof [SOUND, 0 ms] (2) Prolog (3) UnifyTransformerProof [EQUIVALENT, 0 ms] (4) Prolog (5) OrTransformerProof [EQUIVALENT, 0 ms] (6) Prolog (7) PrologToPiTRSProof [SOUND, 25 ms] (8) PiTRS (9) DependencyPairsProof [EQUIVALENT, 122 ms] (10) PiDP (11) DependencyGraphProof [EQUIVALENT, 0 ms] (12) AND (13) PiDP (14) UsableRulesProof [EQUIVALENT, 0 ms] (15) PiDP (16) PiDPToQDPProof [SOUND, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) PiDP (21) UsableRulesProof [EQUIVALENT, 0 ms] (22) PiDP (23) PiDPToQDPProof [SOUND, 0 ms] (24) QDP (25) QDPSizeChangeProof [EQUIVALENT, 0 ms] (26) YES (27) PiDP (28) UsableRulesProof [EQUIVALENT, 0 ms] (29) PiDP (30) PiDPToQDPProof [SOUND, 0 ms] (31) QDP (32) QDPSizeChangeProof [EQUIVALENT, 0 ms] (33) YES (34) PiDP (35) UsableRulesProof [EQUIVALENT, 0 ms] (36) PiDP (37) PiDPToQDPProof [SOUND, 0 ms] (38) QDP (39) QDPSizeChangeProof [EQUIVALENT, 0 ms] (40) YES (41) PiDP (42) UsableRulesProof [EQUIVALENT, 0 ms] (43) PiDP (44) PiDPToQDPProof [SOUND, 0 ms] (45) QDP (46) QDPSizeChangeProof [EQUIVALENT, 0 ms] (47) YES (48) PiDP (49) UsableRulesProof [EQUIVALENT, 0 ms] (50) PiDP (51) PiDPToQDPProof [SOUND, 0 ms] (52) QDP (53) QDPSizeChangeProof [EQUIVALENT, 0 ms] (54) YES (55) PiDP (56) UsableRulesProof [EQUIVALENT, 0 ms] (57) PiDP (58) PiDPToQDPProof [EQUIVALENT, 0 ms] (59) QDP (60) QDPSizeChangeProof [EQUIVALENT, 0 ms] (61) YES (62) PiDP (63) UsableRulesProof [EQUIVALENT, 0 ms] (64) PiDP (65) PiDPToQDPProof [SOUND, 0 ms] (66) QDP (67) MRRProof [EQUIVALENT, 32 ms] (68) QDP (69) UsableRulesProof [EQUIVALENT, 0 ms] (70) QDP (71) QReductionProof [EQUIVALENT, 0 ms] (72) QDP (73) TransformationProof [EQUIVALENT, 0 ms] (74) QDP (75) UsableRulesProof [EQUIVALENT, 0 ms] (76) QDP (77) QReductionProof [EQUIVALENT, 0 ms] (78) QDP (79) TransformationProof [EQUIVALENT, 0 ms] (80) QDP (81) TransformationProof [EQUIVALENT, 0 ms] (82) QDP (83) UsableRulesProof [EQUIVALENT, 0 ms] (84) QDP (85) QReductionProof [EQUIVALENT, 0 ms] (86) QDP (87) TransformationProof [EQUIVALENT, 0 ms] (88) QDP (89) TransformationProof [EQUIVALENT, 0 ms] (90) QDP (91) TransformationProof [EQUIVALENT, 0 ms] (92) QDP (93) UsableRulesProof [EQUIVALENT, 0 ms] (94) QDP (95) TransformationProof [EQUIVALENT, 0 ms] (96) QDP (97) UsableRulesProof [EQUIVALENT, 0 ms] (98) QDP (99) QReductionProof [EQUIVALENT, 0 ms] (100) QDP (101) TransformationProof [EQUIVALENT, 0 ms] (102) QDP (103) TransformationProof [EQUIVALENT, 0 ms] (104) QDP (105) UsableRulesProof [EQUIVALENT, 0 ms] (106) QDP (107) QReductionProof [EQUIVALENT, 0 ms] (108) QDP (109) TransformationProof [EQUIVALENT, 0 ms] (110) QDP (111) TransformationProof [EQUIVALENT, 0 ms] (112) QDP (113) TransformationProof [EQUIVALENT, 0 ms] (114) QDP (115) TransformationProof [EQUIVALENT, 0 ms] (116) QDP (117) NonTerminationLoopProof [COMPLETE, 0 ms] (118) NO (119) PrologToPiTRSProof [SOUND, 24 ms] (120) PiTRS (121) DependencyPairsProof [EQUIVALENT, 127 ms] (122) PiDP (123) DependencyGraphProof [EQUIVALENT, 0 ms] (124) AND (125) PiDP (126) UsableRulesProof [EQUIVALENT, 0 ms] (127) PiDP (128) PiDPToQDPProof [SOUND, 0 ms] (129) QDP (130) QDPSizeChangeProof [EQUIVALENT, 0 ms] (131) YES (132) PiDP (133) UsableRulesProof [EQUIVALENT, 0 ms] (134) PiDP (135) PiDPToQDPProof [SOUND, 0 ms] (136) QDP (137) QDPSizeChangeProof [EQUIVALENT, 0 ms] (138) YES (139) PiDP (140) UsableRulesProof [EQUIVALENT, 0 ms] (141) PiDP (142) PiDPToQDPProof [SOUND, 0 ms] (143) QDP (144) QDPSizeChangeProof [EQUIVALENT, 0 ms] (145) YES (146) PiDP (147) UsableRulesProof [EQUIVALENT, 0 ms] (148) PiDP (149) PiDPToQDPProof [SOUND, 0 ms] (150) QDP (151) QDPSizeChangeProof [EQUIVALENT, 0 ms] (152) YES (153) PiDP (154) UsableRulesProof [EQUIVALENT, 0 ms] (155) PiDP (156) PiDPToQDPProof [SOUND, 0 ms] (157) QDP (158) QDPSizeChangeProof [EQUIVALENT, 0 ms] (159) YES (160) PiDP (161) UsableRulesProof [EQUIVALENT, 0 ms] (162) PiDP (163) PiDPToQDPProof [SOUND, 0 ms] (164) QDP (165) QDPSizeChangeProof [EQUIVALENT, 0 ms] (166) YES (167) PiDP (168) UsableRulesProof [EQUIVALENT, 0 ms] (169) PiDP (170) PiDPToQDPProof [EQUIVALENT, 0 ms] (171) QDP (172) QDPSizeChangeProof [EQUIVALENT, 0 ms] (173) YES (174) PiDP (175) UsableRulesProof [EQUIVALENT, 0 ms] (176) PiDP (177) PiDPToQDPProof [SOUND, 0 ms] (178) QDP (179) UsableRulesReductionPairsProof [EQUIVALENT, 18 ms] (180) QDP (181) UsableRulesProof [EQUIVALENT, 0 ms] (182) QDP (183) QReductionProof [EQUIVALENT, 0 ms] (184) QDP (185) TransformationProof [EQUIVALENT, 0 ms] (186) QDP (187) UsableRulesProof [EQUIVALENT, 0 ms] (188) QDP (189) QReductionProof [EQUIVALENT, 0 ms] (190) QDP (191) TransformationProof [EQUIVALENT, 0 ms] (192) QDP (193) TransformationProof [EQUIVALENT, 0 ms] (194) QDP (195) UsableRulesProof [EQUIVALENT, 0 ms] (196) QDP (197) QReductionProof [EQUIVALENT, 0 ms] (198) QDP (199) TransformationProof [EQUIVALENT, 0 ms] (200) QDP (201) TransformationProof [EQUIVALENT, 0 ms] (202) QDP (203) TransformationProof [EQUIVALENT, 0 ms] (204) QDP (205) UsableRulesProof [EQUIVALENT, 0 ms] (206) QDP (207) TransformationProof [EQUIVALENT, 0 ms] (208) QDP (209) UsableRulesProof [EQUIVALENT, 0 ms] (210) QDP (211) QReductionProof [EQUIVALENT, 0 ms] (212) QDP (213) TransformationProof [EQUIVALENT, 0 ms] (214) QDP (215) TransformationProof [EQUIVALENT, 0 ms] (216) QDP (217) UsableRulesProof [EQUIVALENT, 0 ms] (218) QDP (219) QReductionProof [EQUIVALENT, 0 ms] (220) QDP (221) TransformationProof [EQUIVALENT, 0 ms] (222) QDP (223) TransformationProof [EQUIVALENT, 0 ms] (224) QDP (225) NonTerminationLoopProof [COMPLETE, 0 ms] (226) NO (227) UnifyTransformerProof [EQUIVALENT, 0 ms] (228) Prolog (229) OrTransformerProof [EQUIVALENT, 0 ms] (230) Prolog (231) UndefinedPredicateHandlerProof [SOUND, 0 ms] (232) Prolog (233) PrologToPiTRSProof [SOUND, 0 ms] (234) PiTRS (235) DependencyPairsProof [EQUIVALENT, 5 ms] (236) PiDP (237) DependencyGraphProof [EQUIVALENT, 0 ms] (238) PiDP (239) UsableRulesProof [EQUIVALENT, 0 ms] (240) PiDP (241) PiDPToQDPProof [SOUND, 1 ms] (242) QDP (243) TransformationProof [EQUIVALENT, 0 ms] (244) QDP (245) UsableRulesProof [EQUIVALENT, 0 ms] (246) QDP (247) QReductionProof [EQUIVALENT, 0 ms] (248) QDP (249) NonTerminationLoopProof [COMPLETE, 0 ms] (250) NO (251) PrologToPiTRSProof [SOUND, 0 ms] (252) PiTRS (253) DependencyPairsProof [EQUIVALENT, 0 ms] (254) PiDP (255) DependencyGraphProof [EQUIVALENT, 0 ms] (256) PiDP (257) UsableRulesProof [EQUIVALENT, 0 ms] (258) PiDP (259) PiDPToQDPProof [SOUND, 5 ms] (260) QDP (261) TransformationProof [EQUIVALENT, 0 ms] (262) QDP (263) UsableRulesProof [EQUIVALENT, 0 ms] (264) QDP (265) QReductionProof [EQUIVALENT, 0 ms] (266) QDP (267) NonTerminationLoopProof [COMPLETE, 0 ms] (268) NO ---------------------------------------- (0) Obligation: Clauses: fact(X, Y) :- ','(;(is(0, X), is(1, X)), ','(=<(X, 1), =(Y, 1))). fact(X, Y) :- ','(>=(X, 2), ','(fact(-(X, 1), Y1), is(Y, *(Y1, X)))). Query: fact(a,g) ---------------------------------------- (1) IntegerArithmeticTransformerProof (SOUND) Added definitions of predefined predicates [PROLOG]. ---------------------------------------- (2) Obligation: Clauses: fact(X, Y) :- ','(;(=(zero, X), =(succ(zero), X)), ','(=(X1, X), ','(=(X2, succ(zero)), ','(;(=(X1, X2), isLess(X1, X2)), =(Y, succ(zero)))))). fact(X, Y) :- ','(=(X1, X), ','(=(X2, succ(succ(zero))), ','(;(isGreater(X1, X2), =(X1, X2)), ','(fact(-(X, succ(zero)), Y1), ','(isTimes(Y1, X, U), =(Y, U)))))). isPlus(zero, X, X). isPlus(succ(X), zero, succ(X)). isPlus(succ(X), succ(Y), succ(succ(Z))) :- isPlus(X, Y, Z). isPlus(succ(X), pred(Y), Z) :- isPlus(X, Y, Z). isPlus(pred(X), zero, pred(X)). isPlus(pred(X), succ(Y), Z) :- isPlus(X, Y, Z). isPlus(pred(X), pred(Y), pred(pred(Z))) :- isPlus(X, Y, Z). isMinus(X, zero, X). isMinus(zero, succ(Y), pred(Z)) :- isMinus(zero, Y, Z). isMinus(zero, pred(Y), succ(Z)) :- isMinus(zero, Y, Z). isMinus(succ(X), succ(Y), Z) :- isMinus(X, Y, Z). isMinus(succ(X), pred(Y), succ(succ(Z))) :- isMinus(X, Y, Z). isMinus(pred(X), succ(Y), pred(pred(Z))) :- isMinus(X, Y, Z). isMinus(pred(X), pred(Y), Z) :- isMinus(X, Y, Z). isTimes(X, zero, zero). isTimes(zero, succ(Y), zero). isTimes(zero, pred(Y), zero). isTimes(succ(X), succ(Y), Z) :- ','(isTimes(succ(X), Y, A), isPlus(A, succ(X), Z)). isTimes(succ(X), pred(Y), Z) :- ','(isTimes(succ(X), Y, A), isMinus(A, succ(X), Z)). isTimes(pred(X), succ(Y), Z) :- ','(isTimes(pred(X), Y, A), isPlus(A, pred(X), Z)). isTimes(pred(X), pred(Y), Z) :- ','(isTimes(pred(X), Y, A), isMinus(A, pred(X), Z)). isDiv(zero, succ(Y), zero). isDiv(zero, pred(Y), zero). isDiv(succ(X), succ(Y), zero) :- isMinus(succ(X), succ(Y), pred(Z)). isDiv(succ(X), succ(Y), succ(Z)) :- ','(isMinus(succ(X), succ(Y), A), isDiv(A, succ(Y), Z)). isDiv(succ(X), pred(Y), Z) :- ','(isMinus(zero, pred(Y), A), ','(isDiv(succ(X), A, B), isMinus(zero, B, Z))). isDiv(pred(X), pred(Y), zero) :- isMinus(pred(X), pred(Y), succ(Z)). isDiv(pred(X), pred(Y), succ(Z)) :- ','(isMinus(pred(X), pred(Y), A), isDiv(A, pred(Y), Z)). isDiv(pred(X), succ(Y), Z) :- ','(isMinus(zero, pred(X), A), ','(isDiv(A, succ(Y), B), isMinus(zero, B, Z))). isModulo(X, Y, Z) :- ','(isDiv(X, Y, A), ','(isTimes(A, Y, B), isMinus(X, B, Z))). isGreater(succ(X), zero). isGreater(succ(X), pred(Y)). isGreater(succ(X), succ(Y)) :- isGreater(X, Y). isGreater(zero, pred(Y)). isGreater(pred(X), pred(Y)) :- isGreater(X, Y). isLess(pred(X), zero). isLess(pred(X), succ(Y)). isLess(pred(X), pred(Y)) :- isLess(X, Y). isLess(zero, succ(Y)). isLess(succ(X), succ(Y)) :- isLess(X, Y). Query: fact(a,g) ---------------------------------------- (3) UnifyTransformerProof (EQUIVALENT) Added a fact for the built-in = predicate [PROLOG]. ---------------------------------------- (4) Obligation: Clauses: fact(X, Y) :- ','(;(=(zero, X), =(succ(zero), X)), ','(=(X1, X), ','(=(X2, succ(zero)), ','(;(=(X1, X2), isLess(X1, X2)), =(Y, succ(zero)))))). fact(X, Y) :- ','(=(X1, X), ','(=(X2, succ(succ(zero))), ','(;(isGreater(X1, X2), =(X1, X2)), ','(fact(-(X, succ(zero)), Y1), ','(isTimes(Y1, X, U), =(Y, U)))))). isPlus(zero, X, X). isPlus(succ(X), zero, succ(X)). isPlus(succ(X), succ(Y), succ(succ(Z))) :- isPlus(X, Y, Z). isPlus(succ(X), pred(Y), Z) :- isPlus(X, Y, Z). isPlus(pred(X), zero, pred(X)). isPlus(pred(X), succ(Y), Z) :- isPlus(X, Y, Z). isPlus(pred(X), pred(Y), pred(pred(Z))) :- isPlus(X, Y, Z). isMinus(X, zero, X). isMinus(zero, succ(Y), pred(Z)) :- isMinus(zero, Y, Z). isMinus(zero, pred(Y), succ(Z)) :- isMinus(zero, Y, Z). isMinus(succ(X), succ(Y), Z) :- isMinus(X, Y, Z). isMinus(succ(X), pred(Y), succ(succ(Z))) :- isMinus(X, Y, Z). isMinus(pred(X), succ(Y), pred(pred(Z))) :- isMinus(X, Y, Z). isMinus(pred(X), pred(Y), Z) :- isMinus(X, Y, Z). isTimes(X, zero, zero). isTimes(zero, succ(Y), zero). isTimes(zero, pred(Y), zero). isTimes(succ(X), succ(Y), Z) :- ','(isTimes(succ(X), Y, A), isPlus(A, succ(X), Z)). isTimes(succ(X), pred(Y), Z) :- ','(isTimes(succ(X), Y, A), isMinus(A, succ(X), Z)). isTimes(pred(X), succ(Y), Z) :- ','(isTimes(pred(X), Y, A), isPlus(A, pred(X), Z)). isTimes(pred(X), pred(Y), Z) :- ','(isTimes(pred(X), Y, A), isMinus(A, pred(X), Z)). isDiv(zero, succ(Y), zero). isDiv(zero, pred(Y), zero). isDiv(succ(X), succ(Y), zero) :- isMinus(succ(X), succ(Y), pred(Z)). isDiv(succ(X), succ(Y), succ(Z)) :- ','(isMinus(succ(X), succ(Y), A), isDiv(A, succ(Y), Z)). isDiv(succ(X), pred(Y), Z) :- ','(isMinus(zero, pred(Y), A), ','(isDiv(succ(X), A, B), isMinus(zero, B, Z))). isDiv(pred(X), pred(Y), zero) :- isMinus(pred(X), pred(Y), succ(Z)). isDiv(pred(X), pred(Y), succ(Z)) :- ','(isMinus(pred(X), pred(Y), A), isDiv(A, pred(Y), Z)). isDiv(pred(X), succ(Y), Z) :- ','(isMinus(zero, pred(X), A), ','(isDiv(A, succ(Y), B), isMinus(zero, B, Z))). isModulo(X, Y, Z) :- ','(isDiv(X, Y, A), ','(isTimes(A, Y, B), isMinus(X, B, Z))). isGreater(succ(X), zero). isGreater(succ(X), pred(Y)). isGreater(succ(X), succ(Y)) :- isGreater(X, Y). isGreater(zero, pred(Y)). isGreater(pred(X), pred(Y)) :- isGreater(X, Y). isLess(pred(X), zero). isLess(pred(X), succ(Y)). isLess(pred(X), pred(Y)) :- isLess(X, Y). isLess(zero, succ(Y)). isLess(succ(X), succ(Y)) :- isLess(X, Y). =(X, X). Query: fact(a,g) ---------------------------------------- (5) OrTransformerProof (EQUIVALENT) Transformed all or-constructs[PROLOG]. ---------------------------------------- (6) Obligation: Clauses: fact(X, Y) :- ','(=(zero, X), ','(=(X1, X), ','(=(X2, succ(zero)), ','(=(X1, X2), =(Y, succ(zero)))))). fact(X, Y) :- ','(=(zero, X), ','(=(X1, X), ','(=(X2, succ(zero)), ','(isLess(X1, X2), =(Y, succ(zero)))))). fact(X, Y) :- ','(=(succ(zero), X), ','(=(X1, X), ','(=(X2, succ(zero)), ','(=(X1, X2), =(Y, succ(zero)))))). fact(X, Y) :- ','(=(succ(zero), X), ','(=(X1, X), ','(=(X2, succ(zero)), ','(isLess(X1, X2), =(Y, succ(zero)))))). fact(X, Y) :- ','(=(X1, X), ','(=(X2, succ(succ(zero))), ','(isGreater(X1, X2), ','(fact(-(X, succ(zero)), Y1), ','(isTimes(Y1, X, U), =(Y, U)))))). fact(X, Y) :- ','(=(X1, X), ','(=(X2, succ(succ(zero))), ','(=(X1, X2), ','(fact(-(X, succ(zero)), Y1), ','(isTimes(Y1, X, U), =(Y, U)))))). isPlus(zero, X, X). isPlus(succ(X), zero, succ(X)). isPlus(succ(X), succ(Y), succ(succ(Z))) :- isPlus(X, Y, Z). isPlus(succ(X), pred(Y), Z) :- isPlus(X, Y, Z). isPlus(pred(X), zero, pred(X)). isPlus(pred(X), succ(Y), Z) :- isPlus(X, Y, Z). isPlus(pred(X), pred(Y), pred(pred(Z))) :- isPlus(X, Y, Z). isMinus(X, zero, X). isMinus(zero, succ(Y), pred(Z)) :- isMinus(zero, Y, Z). isMinus(zero, pred(Y), succ(Z)) :- isMinus(zero, Y, Z). isMinus(succ(X), succ(Y), Z) :- isMinus(X, Y, Z). isMinus(succ(X), pred(Y), succ(succ(Z))) :- isMinus(X, Y, Z). isMinus(pred(X), succ(Y), pred(pred(Z))) :- isMinus(X, Y, Z). isMinus(pred(X), pred(Y), Z) :- isMinus(X, Y, Z). isTimes(X, zero, zero). isTimes(zero, succ(Y), zero). isTimes(zero, pred(Y), zero). isTimes(succ(X), succ(Y), Z) :- ','(isTimes(succ(X), Y, A), isPlus(A, succ(X), Z)). isTimes(succ(X), pred(Y), Z) :- ','(isTimes(succ(X), Y, A), isMinus(A, succ(X), Z)). isTimes(pred(X), succ(Y), Z) :- ','(isTimes(pred(X), Y, A), isPlus(A, pred(X), Z)). isTimes(pred(X), pred(Y), Z) :- ','(isTimes(pred(X), Y, A), isMinus(A, pred(X), Z)). isDiv(zero, succ(Y), zero). isDiv(zero, pred(Y), zero). isDiv(succ(X), succ(Y), zero) :- isMinus(succ(X), succ(Y), pred(Z)). isDiv(succ(X), succ(Y), succ(Z)) :- ','(isMinus(succ(X), succ(Y), A), isDiv(A, succ(Y), Z)). isDiv(succ(X), pred(Y), Z) :- ','(isMinus(zero, pred(Y), A), ','(isDiv(succ(X), A, B), isMinus(zero, B, Z))). isDiv(pred(X), pred(Y), zero) :- isMinus(pred(X), pred(Y), succ(Z)). isDiv(pred(X), pred(Y), succ(Z)) :- ','(isMinus(pred(X), pred(Y), A), isDiv(A, pred(Y), Z)). isDiv(pred(X), succ(Y), Z) :- ','(isMinus(zero, pred(X), A), ','(isDiv(A, succ(Y), B), isMinus(zero, B, Z))). isModulo(X, Y, Z) :- ','(isDiv(X, Y, A), ','(isTimes(A, Y, B), isMinus(X, B, Z))). isGreater(succ(X), zero). isGreater(succ(X), pred(Y)). isGreater(succ(X), succ(Y)) :- isGreater(X, Y). isGreater(zero, pred(Y)). isGreater(pred(X), pred(Y)) :- isGreater(X, Y). isLess(pred(X), zero). isLess(pred(X), succ(Y)). isLess(pred(X), pred(Y)) :- isLess(X, Y). isLess(zero, succ(Y)). isLess(succ(X), succ(Y)) :- isLess(X, Y). =(X, X). Query: fact(a,g) ---------------------------------------- (7) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: fact_in_2: (f,b) (f,f) isLess_in_2: (b,b) isGreater_in_2: (f,b) isTimes_in_3: (b,b,f) isMinus_in_3: (b,b,f) isPlus_in_3: (b,b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (8) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ---------------------------------------- (9) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, =_in_ga(zero, X)) FACT_IN_AG(X, Y) -> =_IN_GA(zero, X) U1_AG(X, Y, =_out_ga(zero, X)) -> U2_AG(X, Y, =_in_ag(X1, X)) U1_AG(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AG(X, Y, =_out_ag(X1, X)) -> U3_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AG(X, Y, =_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AG(X, Y, =_out_gg(X1, X2)) -> U5_AG(X, Y, =_in_gg(Y, succ(zero))) U4_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AG(X, Y, isLess_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U60_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(succ(X), succ(Y)) -> U61_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> U7_AG(X, Y, =_in_gg(Y, succ(zero))) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U8_AG(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AG(X, Y) -> =_IN_GA(succ(zero), X) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> U9_AG(X, Y, =_in_ag(X1, X)) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AG(X, Y, =_out_ag(X1, X)) -> U10_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AG(X, Y, =_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AG(X, Y, =_out_gg(X1, X2)) -> U12_AG(X, Y, =_in_gg(Y, succ(zero))) U11_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AG(X, Y, isLess_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> U14_AG(X, Y, =_in_gg(Y, succ(zero))) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U15_AG(X, Y, =_in_aa(X1, X)) FACT_IN_AG(X, Y) -> =_IN_AA(X1, X) U15_AG(X, Y, =_out_aa(X1, X)) -> U16_AG(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AG(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AG(X, Y, isGreater_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) ISGREATER_IN_AG(succ(X), succ(Y)) -> U58_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(pred(X), pred(Y)) -> U59_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> U18_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, =_in_ga(zero, X)) FACT_IN_AA(X, Y) -> =_IN_GA(zero, X) U1_AA(X, Y, =_out_ga(zero, X)) -> U2_AA(X, Y, =_in_ag(X1, X)) U1_AA(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AA(X, Y, =_out_ag(X1, X)) -> U3_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AA(X, Y, =_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AA(X, Y, =_out_gg(X1, X2)) -> U5_AA(X, Y, =_in_ag(Y, succ(zero))) U4_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AA(X, Y, isLess_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> U7_AA(X, Y, =_in_ag(Y, succ(zero))) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U8_AA(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AA(X, Y) -> =_IN_GA(succ(zero), X) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> U9_AA(X, Y, =_in_ag(X1, X)) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AA(X, Y, =_out_ag(X1, X)) -> U10_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AA(X, Y, =_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AA(X, Y, =_out_gg(X1, X2)) -> U12_AA(X, Y, =_in_ag(Y, succ(zero))) U11_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AA(X, Y, isLess_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> U14_AA(X, Y, =_in_ag(Y, succ(zero))) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) FACT_IN_AA(X, Y) -> =_IN_AA(X1, X) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AA(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> U18_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AA(X, Y, isTimes_in_gga(Y1, X, U)) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> U35_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> U37_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> U39_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> U41_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_GGA(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISMINUS_IN_GGA(A, pred(X), Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> U29_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> U30_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> U31_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> U32_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> U33_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> U34_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_GGA(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISPLUS_IN_GGA(A, pred(X), Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U25_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> U26_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> U27_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> U28_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_GGA(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISMINUS_IN_GGA(A, succ(X), Z) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_GGA(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISPLUS_IN_GGA(A, succ(X), Z) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AA(X, Y, =_in_ag(Y, U)) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AA(X, Y, =_out_ag(X1, X2)) -> U22_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AA(X, Y, isTimes_in_gga(Y1, X, U)) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AA(X, Y, =_in_ag(Y, U)) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AG(X, Y, isTimes_in_gga(Y1, X, U)) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AG(X, Y, =_in_gg(Y, U)) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AG(X, Y, =_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AG(X, Y, =_out_ag(X1, X2)) -> U22_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AG(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AG(X, Y, isTimes_in_gga(Y1, X, U)) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AG(X, Y, =_in_gg(Y, U)) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) =_IN_GA(x1, x2) = =_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U3_AG(x1, x2, x3, x4) = U3_AG(x1, x2, x3, x4) U4_AG(x1, x2, x3) = U4_AG(x1, x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U5_AG(x1, x2, x3) = U5_AG(x1, x2, x3) U6_AG(x1, x2, x3) = U6_AG(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U60_GG(x1, x2, x3) = U60_GG(x1, x2, x3) U61_GG(x1, x2, x3) = U61_GG(x1, x2, x3) U7_AG(x1, x2, x3) = U7_AG(x1, x2, x3) U8_AG(x1, x2, x3) = U8_AG(x2, x3) U9_AG(x1, x2, x3) = U9_AG(x1, x2, x3) U10_AG(x1, x2, x3, x4) = U10_AG(x1, x2, x3, x4) U11_AG(x1, x2, x3) = U11_AG(x1, x2, x3) U12_AG(x1, x2, x3) = U12_AG(x1, x2, x3) U13_AG(x1, x2, x3) = U13_AG(x1, x2, x3) U14_AG(x1, x2, x3) = U14_AG(x1, x2, x3) U15_AG(x1, x2, x3) = U15_AG(x2, x3) =_IN_AA(x1, x2) = =_IN_AA U16_AG(x1, x2, x3, x4) = U16_AG(x2, x4) U17_AG(x1, x2, x3) = U17_AG(x2, x3) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) U58_AG(x1, x2, x3) = U58_AG(x2, x3) U59_AG(x1, x2, x3) = U59_AG(x2, x3) U18_AG(x1, x2, x3) = U18_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x1, x3) U3_AA(x1, x2, x3, x4) = U3_AA(x1, x3, x4) U4_AA(x1, x2, x3) = U4_AA(x1, x3) U5_AA(x1, x2, x3) = U5_AA(x1, x3) U6_AA(x1, x2, x3) = U6_AA(x1, x3) U7_AA(x1, x2, x3) = U7_AA(x1, x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x1, x3) U10_AA(x1, x2, x3, x4) = U10_AA(x1, x3, x4) U11_AA(x1, x2, x3) = U11_AA(x1, x3) U12_AA(x1, x2, x3) = U12_AA(x1, x3) U13_AA(x1, x2, x3) = U13_AA(x1, x3) U14_AA(x1, x2, x3) = U14_AA(x1, x3) U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U18_AA(x1, x2, x3) = U18_AA(x3) U19_AA(x1, x2, x3) = U19_AA(x1, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) U35_GGA(x1, x2, x3, x4) = U35_GGA(x1, x2, x4) U37_GGA(x1, x2, x3, x4) = U37_GGA(x1, x2, x4) U39_GGA(x1, x2, x3, x4) = U39_GGA(x1, x2, x4) U41_GGA(x1, x2, x3, x4) = U41_GGA(x1, x2, x4) U42_GGA(x1, x2, x3, x4) = U42_GGA(x1, x2, x4) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) U29_GGA(x1, x2, x3) = U29_GGA(x1, x3) U30_GGA(x1, x2, x3) = U30_GGA(x1, x3) U31_GGA(x1, x2, x3, x4) = U31_GGA(x1, x2, x4) U32_GGA(x1, x2, x3, x4) = U32_GGA(x1, x2, x4) U33_GGA(x1, x2, x3, x4) = U33_GGA(x1, x2, x4) U34_GGA(x1, x2, x3, x4) = U34_GGA(x1, x2, x4) U40_GGA(x1, x2, x3, x4) = U40_GGA(x1, x2, x4) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U25_GGA(x1, x2, x3, x4) = U25_GGA(x1, x2, x4) U26_GGA(x1, x2, x3, x4) = U26_GGA(x1, x2, x4) U27_GGA(x1, x2, x3, x4) = U27_GGA(x1, x2, x4) U28_GGA(x1, x2, x3, x4) = U28_GGA(x1, x2, x4) U38_GGA(x1, x2, x3, x4) = U38_GGA(x1, x2, x4) U36_GGA(x1, x2, x3, x4) = U36_GGA(x1, x2, x4) U20_AA(x1, x2, x3) = U20_AA(x1, x3) U21_AA(x1, x2, x3) = U21_AA(x3) U22_AA(x1, x2, x3) = U22_AA(x3) U23_AA(x1, x2, x3) = U23_AA(x1, x3) U24_AA(x1, x2, x3) = U24_AA(x1, x3) U19_AG(x1, x2, x3) = U19_AG(x1, x2, x3) U20_AG(x1, x2, x3) = U20_AG(x1, x2, x3) U21_AG(x1, x2, x3) = U21_AG(x2, x3) U22_AG(x1, x2, x3) = U22_AG(x2, x3) U23_AG(x1, x2, x3) = U23_AG(x1, x2, x3) U24_AG(x1, x2, x3) = U24_AG(x1, x2, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (10) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, =_in_ga(zero, X)) FACT_IN_AG(X, Y) -> =_IN_GA(zero, X) U1_AG(X, Y, =_out_ga(zero, X)) -> U2_AG(X, Y, =_in_ag(X1, X)) U1_AG(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AG(X, Y, =_out_ag(X1, X)) -> U3_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AG(X, Y, =_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AG(X, Y, =_out_gg(X1, X2)) -> U5_AG(X, Y, =_in_gg(Y, succ(zero))) U4_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AG(X, Y, isLess_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U60_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(succ(X), succ(Y)) -> U61_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> U7_AG(X, Y, =_in_gg(Y, succ(zero))) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U8_AG(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AG(X, Y) -> =_IN_GA(succ(zero), X) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> U9_AG(X, Y, =_in_ag(X1, X)) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AG(X, Y, =_out_ag(X1, X)) -> U10_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AG(X, Y, =_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AG(X, Y, =_out_gg(X1, X2)) -> U12_AG(X, Y, =_in_gg(Y, succ(zero))) U11_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AG(X, Y, isLess_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> U14_AG(X, Y, =_in_gg(Y, succ(zero))) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U15_AG(X, Y, =_in_aa(X1, X)) FACT_IN_AG(X, Y) -> =_IN_AA(X1, X) U15_AG(X, Y, =_out_aa(X1, X)) -> U16_AG(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AG(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AG(X, Y, isGreater_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) ISGREATER_IN_AG(succ(X), succ(Y)) -> U58_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(pred(X), pred(Y)) -> U59_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> U18_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, =_in_ga(zero, X)) FACT_IN_AA(X, Y) -> =_IN_GA(zero, X) U1_AA(X, Y, =_out_ga(zero, X)) -> U2_AA(X, Y, =_in_ag(X1, X)) U1_AA(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AA(X, Y, =_out_ag(X1, X)) -> U3_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AA(X, Y, =_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AA(X, Y, =_out_gg(X1, X2)) -> U5_AA(X, Y, =_in_ag(Y, succ(zero))) U4_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AA(X, Y, isLess_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> U7_AA(X, Y, =_in_ag(Y, succ(zero))) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U8_AA(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AA(X, Y) -> =_IN_GA(succ(zero), X) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> U9_AA(X, Y, =_in_ag(X1, X)) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AA(X, Y, =_out_ag(X1, X)) -> U10_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AA(X, Y, =_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AA(X, Y, =_out_gg(X1, X2)) -> U12_AA(X, Y, =_in_ag(Y, succ(zero))) U11_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AA(X, Y, isLess_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> U14_AA(X, Y, =_in_ag(Y, succ(zero))) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) FACT_IN_AA(X, Y) -> =_IN_AA(X1, X) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AA(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> U18_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AA(X, Y, isTimes_in_gga(Y1, X, U)) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> U35_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> U37_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> U39_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> U41_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_GGA(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISMINUS_IN_GGA(A, pred(X), Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> U29_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> U30_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> U31_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> U32_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> U33_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> U34_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_GGA(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISPLUS_IN_GGA(A, pred(X), Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U25_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> U26_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> U27_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> U28_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_GGA(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISMINUS_IN_GGA(A, succ(X), Z) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_GGA(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISPLUS_IN_GGA(A, succ(X), Z) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AA(X, Y, =_in_ag(Y, U)) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AA(X, Y, =_out_ag(X1, X2)) -> U22_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AA(X, Y, isTimes_in_gga(Y1, X, U)) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AA(X, Y, =_in_ag(Y, U)) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AG(X, Y, isTimes_in_gga(Y1, X, U)) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AG(X, Y, =_in_gg(Y, U)) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AG(X, Y, =_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AG(X, Y, =_out_ag(X1, X2)) -> U22_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AG(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AG(X, Y, isTimes_in_gga(Y1, X, U)) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AG(X, Y, =_in_gg(Y, U)) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) =_IN_GA(x1, x2) = =_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U3_AG(x1, x2, x3, x4) = U3_AG(x1, x2, x3, x4) U4_AG(x1, x2, x3) = U4_AG(x1, x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U5_AG(x1, x2, x3) = U5_AG(x1, x2, x3) U6_AG(x1, x2, x3) = U6_AG(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U60_GG(x1, x2, x3) = U60_GG(x1, x2, x3) U61_GG(x1, x2, x3) = U61_GG(x1, x2, x3) U7_AG(x1, x2, x3) = U7_AG(x1, x2, x3) U8_AG(x1, x2, x3) = U8_AG(x2, x3) U9_AG(x1, x2, x3) = U9_AG(x1, x2, x3) U10_AG(x1, x2, x3, x4) = U10_AG(x1, x2, x3, x4) U11_AG(x1, x2, x3) = U11_AG(x1, x2, x3) U12_AG(x1, x2, x3) = U12_AG(x1, x2, x3) U13_AG(x1, x2, x3) = U13_AG(x1, x2, x3) U14_AG(x1, x2, x3) = U14_AG(x1, x2, x3) U15_AG(x1, x2, x3) = U15_AG(x2, x3) =_IN_AA(x1, x2) = =_IN_AA U16_AG(x1, x2, x3, x4) = U16_AG(x2, x4) U17_AG(x1, x2, x3) = U17_AG(x2, x3) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) U58_AG(x1, x2, x3) = U58_AG(x2, x3) U59_AG(x1, x2, x3) = U59_AG(x2, x3) U18_AG(x1, x2, x3) = U18_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x1, x3) U3_AA(x1, x2, x3, x4) = U3_AA(x1, x3, x4) U4_AA(x1, x2, x3) = U4_AA(x1, x3) U5_AA(x1, x2, x3) = U5_AA(x1, x3) U6_AA(x1, x2, x3) = U6_AA(x1, x3) U7_AA(x1, x2, x3) = U7_AA(x1, x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x1, x3) U10_AA(x1, x2, x3, x4) = U10_AA(x1, x3, x4) U11_AA(x1, x2, x3) = U11_AA(x1, x3) U12_AA(x1, x2, x3) = U12_AA(x1, x3) U13_AA(x1, x2, x3) = U13_AA(x1, x3) U14_AA(x1, x2, x3) = U14_AA(x1, x3) U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U18_AA(x1, x2, x3) = U18_AA(x3) U19_AA(x1, x2, x3) = U19_AA(x1, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) U35_GGA(x1, x2, x3, x4) = U35_GGA(x1, x2, x4) U37_GGA(x1, x2, x3, x4) = U37_GGA(x1, x2, x4) U39_GGA(x1, x2, x3, x4) = U39_GGA(x1, x2, x4) U41_GGA(x1, x2, x3, x4) = U41_GGA(x1, x2, x4) U42_GGA(x1, x2, x3, x4) = U42_GGA(x1, x2, x4) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) U29_GGA(x1, x2, x3) = U29_GGA(x1, x3) U30_GGA(x1, x2, x3) = U30_GGA(x1, x3) U31_GGA(x1, x2, x3, x4) = U31_GGA(x1, x2, x4) U32_GGA(x1, x2, x3, x4) = U32_GGA(x1, x2, x4) U33_GGA(x1, x2, x3, x4) = U33_GGA(x1, x2, x4) U34_GGA(x1, x2, x3, x4) = U34_GGA(x1, x2, x4) U40_GGA(x1, x2, x3, x4) = U40_GGA(x1, x2, x4) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U25_GGA(x1, x2, x3, x4) = U25_GGA(x1, x2, x4) U26_GGA(x1, x2, x3, x4) = U26_GGA(x1, x2, x4) U27_GGA(x1, x2, x3, x4) = U27_GGA(x1, x2, x4) U28_GGA(x1, x2, x3, x4) = U28_GGA(x1, x2, x4) U38_GGA(x1, x2, x3, x4) = U38_GGA(x1, x2, x4) U36_GGA(x1, x2, x3, x4) = U36_GGA(x1, x2, x4) U20_AA(x1, x2, x3) = U20_AA(x1, x3) U21_AA(x1, x2, x3) = U21_AA(x3) U22_AA(x1, x2, x3) = U22_AA(x3) U23_AA(x1, x2, x3) = U23_AA(x1, x3) U24_AA(x1, x2, x3) = U24_AA(x1, x3) U19_AG(x1, x2, x3) = U19_AG(x1, x2, x3) U20_AG(x1, x2, x3) = U20_AG(x1, x2, x3) U21_AG(x1, x2, x3) = U21_AG(x2, x3) U22_AG(x1, x2, x3) = U22_AG(x2, x3) U23_AG(x1, x2, x3) = U23_AG(x1, x2, x3) U24_AG(x1, x2, x3) = U24_AG(x1, x2, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (11) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 8 SCCs with 116 less nodes. ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Pi DP problem: The TRS P consists of the following rules: ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (14) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (15) Obligation: Pi DP problem: The TRS P consists of the following rules: ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (16) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: ISPLUS_IN_GGA(succ(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) ISPLUS_IN_GGA(succ(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) ISPLUS_IN_GGA(pred(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) ISPLUS_IN_GGA(pred(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) R is empty. Q is empty. We have to consider all (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: *ISPLUS_IN_GGA(succ(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISPLUS_IN_GGA(succ(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISPLUS_IN_GGA(pred(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISPLUS_IN_GGA(pred(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (21) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (22) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) R is empty. The argument filtering Pi contains the following mapping: zero = zero succ(x1) = succ(x1) pred(x1) = pred(x1) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (23) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (24) Obligation: Q DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(zero, pred(Y)) -> ISMINUS_IN_GGA(zero, Y) ISMINUS_IN_GGA(zero, succ(Y)) -> ISMINUS_IN_GGA(zero, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (25) 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: *ISMINUS_IN_GGA(zero, pred(Y)) -> ISMINUS_IN_GGA(zero, Y) The graph contains the following edges 1 >= 1, 2 > 2 *ISMINUS_IN_GGA(zero, succ(Y)) -> ISMINUS_IN_GGA(zero, Y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (26) YES ---------------------------------------- (27) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (28) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (29) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (30) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (31) Obligation: Q DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(succ(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) ISMINUS_IN_GGA(succ(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) ISMINUS_IN_GGA(pred(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) ISMINUS_IN_GGA(pred(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (32) 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: *ISMINUS_IN_GGA(succ(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISMINUS_IN_GGA(succ(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISMINUS_IN_GGA(pred(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISMINUS_IN_GGA(pred(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (33) YES ---------------------------------------- (34) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (35) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (36) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (37) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (38) Obligation: Q DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(pred(X), pred(Y)) -> ISTIMES_IN_GGA(pred(X), Y) ISTIMES_IN_GGA(pred(X), succ(Y)) -> ISTIMES_IN_GGA(pred(X), Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (39) 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: *ISTIMES_IN_GGA(pred(X), pred(Y)) -> ISTIMES_IN_GGA(pred(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 *ISTIMES_IN_GGA(pred(X), succ(Y)) -> ISTIMES_IN_GGA(pred(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (40) YES ---------------------------------------- (41) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (42) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (43) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (44) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (45) Obligation: Q DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(succ(X), pred(Y)) -> ISTIMES_IN_GGA(succ(X), Y) ISTIMES_IN_GGA(succ(X), succ(Y)) -> ISTIMES_IN_GGA(succ(X), Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (46) 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: *ISTIMES_IN_GGA(succ(X), pred(Y)) -> ISTIMES_IN_GGA(succ(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 *ISTIMES_IN_GGA(succ(X), succ(Y)) -> ISTIMES_IN_GGA(succ(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (47) YES ---------------------------------------- (48) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (49) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (50) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (51) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: ISGREATER_IN_AG(pred(Y)) -> ISGREATER_IN_AG(Y) ISGREATER_IN_AG(succ(Y)) -> ISGREATER_IN_AG(Y) R is empty. Q is empty. We have to consider all (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: *ISGREATER_IN_AG(pred(Y)) -> ISGREATER_IN_AG(Y) The graph contains the following edges 1 > 1 *ISGREATER_IN_AG(succ(Y)) -> ISGREATER_IN_AG(Y) The graph contains the following edges 1 > 1 ---------------------------------------- (54) YES ---------------------------------------- (55) Obligation: Pi DP problem: The TRS P consists of the following rules: ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (56) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (57) Obligation: Pi DP problem: The TRS P consists of the following rules: ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (58) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (59) Obligation: Q DP problem: The TRS P consists of the following rules: ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (60) 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: *ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (61) YES ---------------------------------------- (62) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x1, x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U5_ag(x1, x2, x3) = U5_ag(x1, x2, x3) fact_out_ag(x1, x2) = fact_out_ag(x1, x2) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U60_gg(x1, x2, x3) = U60_gg(x1, x2, x3) U61_gg(x1, x2, x3) = U61_gg(x1, x2, x3) U7_ag(x1, x2, x3) = U7_ag(x1, x2, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x2, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x2, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x1, x2, x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x2, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x2, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x2, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x2, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x1, x2, x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x1, x2, x3) U29_gga(x1, x2, x3) = U29_gga(x1, x3) U30_gga(x1, x2, x3) = U30_gga(x1, x3) U31_gga(x1, x2, x3, x4) = U31_gga(x1, x2, x4) U32_gga(x1, x2, x3, x4) = U32_gga(x1, x2, x4) U33_gga(x1, x2, x3, x4) = U33_gga(x1, x2, x4) U34_gga(x1, x2, x3, x4) = U34_gga(x1, x2, x4) U40_gga(x1, x2, x3, x4) = U40_gga(x1, x2, x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U25_gga(x1, x2, x3, x4) = U25_gga(x1, x2, x4) U26_gga(x1, x2, x3, x4) = U26_gga(x1, x2, x4) U27_gga(x1, x2, x3, x4) = U27_gga(x1, x2, x4) U28_gga(x1, x2, x3, x4) = U28_gga(x1, x2, x4) U38_gga(x1, x2, x3, x4) = U38_gga(x1, x2, x4) U36_gga(x1, x2, x3, x4) = U36_gga(x1, x2, x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x2, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U21_AA(x1, x2, x3) = U21_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (63) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (64) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) The TRS R consists of the following rules: =_in_aa(X, X) -> =_out_aa(X, X) =_in_ag(X, X) -> =_out_ag(X, X) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) The argument filtering Pi contains the following mapping: zero = zero =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) succ(x1) = succ(x1) pred(x1) = pred(x1) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag(x2) U58_ag(x1, x2, x3) = U58_ag(x2, x3) U59_ag(x1, x2, x3) = U59_ag(x2, x3) -(x1, x2) = -(x1, x2) FACT_IN_AA(x1, x2) = FACT_IN_AA U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U21_AA(x1, x2, x3) = U21_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (65) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (66) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_aa -> =_out_aa =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(pred(Y)) -> isGreater_out_ag(pred(Y)) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) isGreater_in_ag(pred(Y)) -> U59_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) U59_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(pred(Y)) The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) U59_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (67) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented rules of the TRS R: isGreater_in_ag(pred(Y)) -> isGreater_out_ag(pred(Y)) isGreater_in_ag(pred(Y)) -> U59_ag(Y, isGreater_in_ag(Y)) Used ordering: Polynomial interpretation [POLO]: POL(=_in_aa) = 0 POL(=_in_ag(x_1)) = 2*x_1 POL(=_out_aa) = 0 POL(=_out_ag(x_1, x_2)) = x_1 + x_2 POL(FACT_IN_AA) = 0 POL(U15_AA(x_1)) = 2*x_1 POL(U16_AA(x_1)) = 2*x_1 POL(U17_AA(x_1)) = x_1 POL(U21_AA(x_1)) = x_1 POL(U58_ag(x_1, x_2)) = x_1 + x_2 POL(U59_ag(x_1, x_2)) = 1 + x_1 + x_2 POL(isGreater_in_ag(x_1)) = 2*x_1 POL(isGreater_out_ag(x_1)) = x_1 POL(pred(x_1)) = 1 + 2*x_1 POL(succ(x_1)) = 2*x_1 POL(zero) = 0 ---------------------------------------- (68) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_aa -> =_out_aa =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) U59_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(pred(Y)) The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) U59_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (69) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (70) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) U59_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (71) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. U59_ag(x0, x1) ---------------------------------------- (72) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (73) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule FACT_IN_AA -> U15_AA(=_in_aa) at position [0] we obtained the following new rules [LPAR04]: (FACT_IN_AA -> U15_AA(=_out_aa),FACT_IN_AA -> U15_AA(=_out_aa)) ---------------------------------------- (74) Obligation: Q DP problem: The TRS P consists of the following rules: U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (75) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (76) Obligation: Q DP problem: The TRS P consists of the following rules: U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (77) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. =_in_aa ---------------------------------------- (78) Obligation: Q DP problem: The TRS P consists of the following rules: U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (79) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) at position [0] we obtained the following new rules [LPAR04]: (U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))),U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero))))) ---------------------------------------- (80) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (81) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_in_ag(X2)) at position [0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)),U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2))) ---------------------------------------- (82) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X, X) isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (83) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (84) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (85) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. =_in_ag(x0) ---------------------------------------- (86) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (87) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U17_AA(isGreater_in_ag(X2)) we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero))))) ---------------------------------------- (88) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (89) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero)))) at position [0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_in_ag(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_in_ag(succ(zero))))) ---------------------------------------- (90) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_in_ag(succ(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (91) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_in_ag(succ(zero)))) at position [0,1] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_in_ag(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_in_ag(zero))))) ---------------------------------------- (92) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_in_ag(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) isGreater_in_ag(succ(Y)) -> U58_ag(Y, isGreater_in_ag(Y)) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (93) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (94) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_in_ag(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (95) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_in_ag(zero)))) at position [0,1,1] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_out_ag(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_out_ag(zero))))) ---------------------------------------- (96) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_out_ag(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag(zero) U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (97) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (98) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_out_ag(zero)))) The TRS R consists of the following rules: U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (99) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. isGreater_in_ag(x0) ---------------------------------------- (100) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_out_ag(zero)))) The TRS R consists of the following rules: U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (101) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), U58_ag(zero, isGreater_out_ag(zero)))) at position [0,1] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_out_ag(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_out_ag(succ(zero))))) ---------------------------------------- (102) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_out_ag(succ(zero)))) The TRS R consists of the following rules: U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (103) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(U58_ag(succ(zero), isGreater_out_ag(succ(zero)))) at position [0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero))))) ---------------------------------------- (104) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) The TRS R consists of the following rules: U58_ag(Y, isGreater_out_ag(Y)) -> isGreater_out_ag(succ(Y)) The set Q consists of the following terms: U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (105) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (106) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) R is empty. The set Q consists of the following terms: U58_ag(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (107) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. U58_ag(x0, x1) ---------------------------------------- (108) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (109) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U17_AA(isGreater_out_ag(X2)) -> FACT_IN_AA we obtained the following new rules [LPAR04]: (U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA,U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA) ---------------------------------------- (110) Obligation: Q DP problem: The TRS P consists of the following rules: U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (111) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U21_AA(=_out_ag(X1, X2)) -> FACT_IN_AA we obtained the following new rules [LPAR04]: (U21_AA(=_out_ag(z0, z0)) -> FACT_IN_AA,U21_AA(=_out_ag(z0, z0)) -> FACT_IN_AA) ---------------------------------------- (112) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA U21_AA(=_out_ag(z0, z0)) -> FACT_IN_AA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (113) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U16_AA(=_out_ag(X2, succ(succ(zero)))) -> U21_AA(=_out_ag(X2, X2)) we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero))))) ---------------------------------------- (114) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA U21_AA(=_out_ag(z0, z0)) -> FACT_IN_AA U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (115) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U21_AA(=_out_ag(z0, z0)) -> FACT_IN_AA we obtained the following new rules [LPAR04]: (U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> FACT_IN_AA,U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> FACT_IN_AA) ---------------------------------------- (116) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) U21_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> FACT_IN_AA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (117) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by narrowing to the left: s = U15_AA(=_out_aa) evaluates to t =U15_AA(=_out_aa) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) with rule U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) at position [] and matcher [ ] U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) with rule U16_AA(=_out_ag(succ(succ(zero)), succ(succ(zero)))) -> U17_AA(isGreater_out_ag(succ(succ(zero)))) at position [] and matcher [ ] U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA with rule U17_AA(isGreater_out_ag(succ(succ(zero)))) -> FACT_IN_AA at position [] and matcher [ ] FACT_IN_AA -> U15_AA(=_out_aa) with rule FACT_IN_AA -> U15_AA(=_out_aa) Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence All these steps are and every following step will be a correct step w.r.t to Q. ---------------------------------------- (118) NO ---------------------------------------- (119) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: fact_in_2: (f,b) (f,f) isLess_in_2: (b,b) isGreater_in_2: (f,b) isTimes_in_3: (b,b,f) isMinus_in_3: (b,b,f) isPlus_in_3: (b,b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (120) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ---------------------------------------- (121) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, =_in_ga(zero, X)) FACT_IN_AG(X, Y) -> =_IN_GA(zero, X) U1_AG(X, Y, =_out_ga(zero, X)) -> U2_AG(X, Y, =_in_ag(X1, X)) U1_AG(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AG(X, Y, =_out_ag(X1, X)) -> U3_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AG(X, Y, =_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AG(X, Y, =_out_gg(X1, X2)) -> U5_AG(X, Y, =_in_gg(Y, succ(zero))) U4_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AG(X, Y, isLess_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U60_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(succ(X), succ(Y)) -> U61_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> U7_AG(X, Y, =_in_gg(Y, succ(zero))) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U8_AG(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AG(X, Y) -> =_IN_GA(succ(zero), X) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> U9_AG(X, Y, =_in_ag(X1, X)) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AG(X, Y, =_out_ag(X1, X)) -> U10_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AG(X, Y, =_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AG(X, Y, =_out_gg(X1, X2)) -> U12_AG(X, Y, =_in_gg(Y, succ(zero))) U11_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AG(X, Y, isLess_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> U14_AG(X, Y, =_in_gg(Y, succ(zero))) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U15_AG(X, Y, =_in_aa(X1, X)) FACT_IN_AG(X, Y) -> =_IN_AA(X1, X) U15_AG(X, Y, =_out_aa(X1, X)) -> U16_AG(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AG(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AG(X, Y, isGreater_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) ISGREATER_IN_AG(succ(X), succ(Y)) -> U58_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(pred(X), pred(Y)) -> U59_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> U18_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, =_in_ga(zero, X)) FACT_IN_AA(X, Y) -> =_IN_GA(zero, X) U1_AA(X, Y, =_out_ga(zero, X)) -> U2_AA(X, Y, =_in_ag(X1, X)) U1_AA(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AA(X, Y, =_out_ag(X1, X)) -> U3_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AA(X, Y, =_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AA(X, Y, =_out_gg(X1, X2)) -> U5_AA(X, Y, =_in_ag(Y, succ(zero))) U4_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AA(X, Y, isLess_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> U7_AA(X, Y, =_in_ag(Y, succ(zero))) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U8_AA(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AA(X, Y) -> =_IN_GA(succ(zero), X) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> U9_AA(X, Y, =_in_ag(X1, X)) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AA(X, Y, =_out_ag(X1, X)) -> U10_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AA(X, Y, =_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AA(X, Y, =_out_gg(X1, X2)) -> U12_AA(X, Y, =_in_ag(Y, succ(zero))) U11_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AA(X, Y, isLess_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> U14_AA(X, Y, =_in_ag(Y, succ(zero))) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) FACT_IN_AA(X, Y) -> =_IN_AA(X1, X) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AA(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> U18_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AA(X, Y, isTimes_in_gga(Y1, X, U)) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> U35_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> U37_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> U39_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> U41_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_GGA(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISMINUS_IN_GGA(A, pred(X), Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> U29_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> U30_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> U31_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> U32_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> U33_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> U34_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_GGA(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISPLUS_IN_GGA(A, pred(X), Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U25_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> U26_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> U27_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> U28_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_GGA(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISMINUS_IN_GGA(A, succ(X), Z) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_GGA(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISPLUS_IN_GGA(A, succ(X), Z) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AA(X, Y, =_in_ag(Y, U)) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AA(X, Y, =_out_ag(X1, X2)) -> U22_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AA(X, Y, isTimes_in_gga(Y1, X, U)) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AA(X, Y, =_in_ag(Y, U)) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AG(X, Y, isTimes_in_gga(Y1, X, U)) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AG(X, Y, =_in_gg(Y, U)) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AG(X, Y, =_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AG(X, Y, =_out_ag(X1, X2)) -> U22_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AG(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AG(X, Y, isTimes_in_gga(Y1, X, U)) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AG(X, Y, =_in_gg(Y, U)) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) =_IN_GA(x1, x2) = =_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U3_AG(x1, x2, x3, x4) = U3_AG(x1, x2, x3, x4) U4_AG(x1, x2, x3) = U4_AG(x1, x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U5_AG(x1, x2, x3) = U5_AG(x1, x3) U6_AG(x1, x2, x3) = U6_AG(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U60_GG(x1, x2, x3) = U60_GG(x3) U61_GG(x1, x2, x3) = U61_GG(x3) U7_AG(x1, x2, x3) = U7_AG(x1, x3) U8_AG(x1, x2, x3) = U8_AG(x2, x3) U9_AG(x1, x2, x3) = U9_AG(x1, x2, x3) U10_AG(x1, x2, x3, x4) = U10_AG(x1, x2, x3, x4) U11_AG(x1, x2, x3) = U11_AG(x1, x2, x3) U12_AG(x1, x2, x3) = U12_AG(x1, x3) U13_AG(x1, x2, x3) = U13_AG(x1, x2, x3) U14_AG(x1, x2, x3) = U14_AG(x1, x3) U15_AG(x1, x2, x3) = U15_AG(x2, x3) =_IN_AA(x1, x2) = =_IN_AA U16_AG(x1, x2, x3, x4) = U16_AG(x2, x4) U17_AG(x1, x2, x3) = U17_AG(x2, x3) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) U58_AG(x1, x2, x3) = U58_AG(x3) U59_AG(x1, x2, x3) = U59_AG(x3) U18_AG(x1, x2, x3) = U18_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x1, x3) U3_AA(x1, x2, x3, x4) = U3_AA(x1, x3, x4) U4_AA(x1, x2, x3) = U4_AA(x1, x3) U5_AA(x1, x2, x3) = U5_AA(x1, x3) U6_AA(x1, x2, x3) = U6_AA(x1, x3) U7_AA(x1, x2, x3) = U7_AA(x1, x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x1, x3) U10_AA(x1, x2, x3, x4) = U10_AA(x1, x3, x4) U11_AA(x1, x2, x3) = U11_AA(x1, x3) U12_AA(x1, x2, x3) = U12_AA(x1, x3) U13_AA(x1, x2, x3) = U13_AA(x1, x3) U14_AA(x1, x2, x3) = U14_AA(x1, x3) U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U18_AA(x1, x2, x3) = U18_AA(x3) U19_AA(x1, x2, x3) = U19_AA(x1, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) U35_GGA(x1, x2, x3, x4) = U35_GGA(x1, x4) U37_GGA(x1, x2, x3, x4) = U37_GGA(x1, x4) U39_GGA(x1, x2, x3, x4) = U39_GGA(x1, x4) U41_GGA(x1, x2, x3, x4) = U41_GGA(x1, x4) U42_GGA(x1, x2, x3, x4) = U42_GGA(x4) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) U29_GGA(x1, x2, x3) = U29_GGA(x3) U30_GGA(x1, x2, x3) = U30_GGA(x3) U31_GGA(x1, x2, x3, x4) = U31_GGA(x4) U32_GGA(x1, x2, x3, x4) = U32_GGA(x4) U33_GGA(x1, x2, x3, x4) = U33_GGA(x4) U34_GGA(x1, x2, x3, x4) = U34_GGA(x4) U40_GGA(x1, x2, x3, x4) = U40_GGA(x4) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U25_GGA(x1, x2, x3, x4) = U25_GGA(x4) U26_GGA(x1, x2, x3, x4) = U26_GGA(x4) U27_GGA(x1, x2, x3, x4) = U27_GGA(x4) U28_GGA(x1, x2, x3, x4) = U28_GGA(x4) U38_GGA(x1, x2, x3, x4) = U38_GGA(x4) U36_GGA(x1, x2, x3, x4) = U36_GGA(x4) U20_AA(x1, x2, x3) = U20_AA(x1, x3) U21_AA(x1, x2, x3) = U21_AA(x3) U22_AA(x1, x2, x3) = U22_AA(x3) U23_AA(x1, x2, x3) = U23_AA(x1, x3) U24_AA(x1, x2, x3) = U24_AA(x1, x3) U19_AG(x1, x2, x3) = U19_AG(x1, x2, x3) U20_AG(x1, x2, x3) = U20_AG(x1, x3) U21_AG(x1, x2, x3) = U21_AG(x2, x3) U22_AG(x1, x2, x3) = U22_AG(x2, x3) U23_AG(x1, x2, x3) = U23_AG(x1, x2, x3) U24_AG(x1, x2, x3) = U24_AG(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (122) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, =_in_ga(zero, X)) FACT_IN_AG(X, Y) -> =_IN_GA(zero, X) U1_AG(X, Y, =_out_ga(zero, X)) -> U2_AG(X, Y, =_in_ag(X1, X)) U1_AG(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AG(X, Y, =_out_ag(X1, X)) -> U3_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AG(X, Y, =_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AG(X, Y, =_out_gg(X1, X2)) -> U5_AG(X, Y, =_in_gg(Y, succ(zero))) U4_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AG(X, Y, isLess_in_gg(X1, X2)) U3_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U60_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(succ(X), succ(Y)) -> U61_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> U7_AG(X, Y, =_in_gg(Y, succ(zero))) U6_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U8_AG(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AG(X, Y) -> =_IN_GA(succ(zero), X) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> U9_AG(X, Y, =_in_ag(X1, X)) U8_AG(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AG(X, Y, =_out_ag(X1, X)) -> U10_AG(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AG(X, Y, =_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AG(X, Y, =_out_gg(X1, X2)) -> U12_AG(X, Y, =_in_gg(Y, succ(zero))) U11_AG(X, Y, =_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AG(X, Y, isLess_in_gg(X1, X2)) U10_AG(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> U14_AG(X, Y, =_in_gg(Y, succ(zero))) U13_AG(X, Y, isLess_out_gg(X1, X2)) -> =_IN_GG(Y, succ(zero)) FACT_IN_AG(X, Y) -> U15_AG(X, Y, =_in_aa(X1, X)) FACT_IN_AG(X, Y) -> =_IN_AA(X1, X) U15_AG(X, Y, =_out_aa(X1, X)) -> U16_AG(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AG(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AG(X, Y, isGreater_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) ISGREATER_IN_AG(succ(X), succ(Y)) -> U58_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(pred(X), pred(Y)) -> U59_AG(X, Y, isGreater_in_ag(X, Y)) ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> U18_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AG(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, =_in_ga(zero, X)) FACT_IN_AA(X, Y) -> =_IN_GA(zero, X) U1_AA(X, Y, =_out_ga(zero, X)) -> U2_AA(X, Y, =_in_ag(X1, X)) U1_AA(X, Y, =_out_ga(zero, X)) -> =_IN_AG(X1, X) U2_AA(X, Y, =_out_ag(X1, X)) -> U3_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U2_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_AA(X, Y, =_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U4_AA(X, Y, =_out_gg(X1, X2)) -> U5_AA(X, Y, =_in_ag(Y, succ(zero))) U4_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_AA(X, Y, isLess_in_gg(X1, X2)) U3_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> U7_AA(X, Y, =_in_ag(Y, succ(zero))) U6_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U8_AA(X, Y, =_in_ga(succ(zero), X)) FACT_IN_AA(X, Y) -> =_IN_GA(succ(zero), X) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> U9_AA(X, Y, =_in_ag(X1, X)) U8_AA(X, Y, =_out_ga(succ(zero), X)) -> =_IN_AG(X1, X) U9_AA(X, Y, =_out_ag(X1, X)) -> U10_AA(X, Y, X1, =_in_ag(X2, succ(zero))) U9_AA(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_AA(X, Y, =_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> =_IN_GG(X1, X2) U11_AA(X, Y, =_out_gg(X1, X2)) -> U12_AA(X, Y, =_in_ag(Y, succ(zero))) U11_AA(X, Y, =_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_AA(X, Y, isLess_in_gg(X1, X2)) U10_AA(X, Y, X1, =_out_ag(X2, succ(zero))) -> ISLESS_IN_GG(X1, X2) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> U14_AA(X, Y, =_in_ag(Y, succ(zero))) U13_AA(X, Y, isLess_out_gg(X1, X2)) -> =_IN_AG(Y, succ(zero)) FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) FACT_IN_AA(X, Y) -> =_IN_AA(X1, X) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U15_AA(X, Y, =_out_aa(X1, X)) -> =_IN_AG(X2, succ(succ(zero))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> ISGREATER_IN_AG(X1, X2) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> U18_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AA(X, Y, isTimes_in_gga(Y1, X, U)) U18_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> U35_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> U37_GGA(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> U39_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> U41_GGA(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_GGA(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) U41_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISMINUS_IN_GGA(A, pred(X), Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> U29_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> U30_GGA(Y, Z, isMinus_in_gga(zero, Y, Z)) ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> U31_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> U32_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> U33_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> U34_GGA(X, Y, Z, isMinus_in_gga(X, Y, Z)) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_GGA(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) U39_GGA(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> ISPLUS_IN_GGA(A, pred(X), Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U25_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> U26_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> U27_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> U28_GGA(X, Y, Z, isPlus_in_gga(X, Y, Z)) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_GGA(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U37_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISMINUS_IN_GGA(A, succ(X), Z) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_GGA(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U35_GGA(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> ISPLUS_IN_GGA(A, succ(X), Z) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AA(X, Y, =_in_ag(Y, U)) U19_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AA(X, Y, =_out_ag(X1, X2)) -> U22_AA(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AA(X, Y, isTimes_in_gga(Y1, X, U)) U22_AA(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AA(X, Y, =_in_ag(Y, U)) U23_AA(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_AG(Y, U) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_AG(X, Y, isTimes_in_gga(Y1, X, U)) U18_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_AG(X, Y, =_in_gg(Y, U)) U19_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AG(X, Y, =_in_ag(X1, X2)) U16_AG(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> =_IN_AG(X1, X2) U21_AG(X, Y, =_out_ag(X1, X2)) -> U22_AG(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U21_AG(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_AG(X, Y, isTimes_in_gga(Y1, X, U)) U22_AG(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> ISTIMES_IN_GGA(Y1, X, U) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_AG(X, Y, =_in_gg(Y, U)) U23_AG(X, Y, isTimes_out_gga(Y1, X, U)) -> =_IN_GG(Y, U) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) =_IN_GA(x1, x2) = =_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U3_AG(x1, x2, x3, x4) = U3_AG(x1, x2, x3, x4) U4_AG(x1, x2, x3) = U4_AG(x1, x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U5_AG(x1, x2, x3) = U5_AG(x1, x3) U6_AG(x1, x2, x3) = U6_AG(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U60_GG(x1, x2, x3) = U60_GG(x3) U61_GG(x1, x2, x3) = U61_GG(x3) U7_AG(x1, x2, x3) = U7_AG(x1, x3) U8_AG(x1, x2, x3) = U8_AG(x2, x3) U9_AG(x1, x2, x3) = U9_AG(x1, x2, x3) U10_AG(x1, x2, x3, x4) = U10_AG(x1, x2, x3, x4) U11_AG(x1, x2, x3) = U11_AG(x1, x2, x3) U12_AG(x1, x2, x3) = U12_AG(x1, x3) U13_AG(x1, x2, x3) = U13_AG(x1, x2, x3) U14_AG(x1, x2, x3) = U14_AG(x1, x3) U15_AG(x1, x2, x3) = U15_AG(x2, x3) =_IN_AA(x1, x2) = =_IN_AA U16_AG(x1, x2, x3, x4) = U16_AG(x2, x4) U17_AG(x1, x2, x3) = U17_AG(x2, x3) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) U58_AG(x1, x2, x3) = U58_AG(x3) U59_AG(x1, x2, x3) = U59_AG(x3) U18_AG(x1, x2, x3) = U18_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x1, x3) U3_AA(x1, x2, x3, x4) = U3_AA(x1, x3, x4) U4_AA(x1, x2, x3) = U4_AA(x1, x3) U5_AA(x1, x2, x3) = U5_AA(x1, x3) U6_AA(x1, x2, x3) = U6_AA(x1, x3) U7_AA(x1, x2, x3) = U7_AA(x1, x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x1, x3) U10_AA(x1, x2, x3, x4) = U10_AA(x1, x3, x4) U11_AA(x1, x2, x3) = U11_AA(x1, x3) U12_AA(x1, x2, x3) = U12_AA(x1, x3) U13_AA(x1, x2, x3) = U13_AA(x1, x3) U14_AA(x1, x2, x3) = U14_AA(x1, x3) U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U18_AA(x1, x2, x3) = U18_AA(x3) U19_AA(x1, x2, x3) = U19_AA(x1, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) U35_GGA(x1, x2, x3, x4) = U35_GGA(x1, x4) U37_GGA(x1, x2, x3, x4) = U37_GGA(x1, x4) U39_GGA(x1, x2, x3, x4) = U39_GGA(x1, x4) U41_GGA(x1, x2, x3, x4) = U41_GGA(x1, x4) U42_GGA(x1, x2, x3, x4) = U42_GGA(x4) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) U29_GGA(x1, x2, x3) = U29_GGA(x3) U30_GGA(x1, x2, x3) = U30_GGA(x3) U31_GGA(x1, x2, x3, x4) = U31_GGA(x4) U32_GGA(x1, x2, x3, x4) = U32_GGA(x4) U33_GGA(x1, x2, x3, x4) = U33_GGA(x4) U34_GGA(x1, x2, x3, x4) = U34_GGA(x4) U40_GGA(x1, x2, x3, x4) = U40_GGA(x4) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U25_GGA(x1, x2, x3, x4) = U25_GGA(x4) U26_GGA(x1, x2, x3, x4) = U26_GGA(x4) U27_GGA(x1, x2, x3, x4) = U27_GGA(x4) U28_GGA(x1, x2, x3, x4) = U28_GGA(x4) U38_GGA(x1, x2, x3, x4) = U38_GGA(x4) U36_GGA(x1, x2, x3, x4) = U36_GGA(x4) U20_AA(x1, x2, x3) = U20_AA(x1, x3) U21_AA(x1, x2, x3) = U21_AA(x3) U22_AA(x1, x2, x3) = U22_AA(x3) U23_AA(x1, x2, x3) = U23_AA(x1, x3) U24_AA(x1, x2, x3) = U24_AA(x1, x3) U19_AG(x1, x2, x3) = U19_AG(x1, x2, x3) U20_AG(x1, x2, x3) = U20_AG(x1, x3) U21_AG(x1, x2, x3) = U21_AG(x2, x3) U22_AG(x1, x2, x3) = U22_AG(x2, x3) U23_AG(x1, x2, x3) = U23_AG(x1, x2, x3) U24_AG(x1, x2, x3) = U24_AG(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (123) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 8 SCCs with 116 less nodes. ---------------------------------------- (124) Complex Obligation (AND) ---------------------------------------- (125) Obligation: Pi DP problem: The TRS P consists of the following rules: ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (126) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (127) Obligation: Pi DP problem: The TRS P consists of the following rules: ISPLUS_IN_GGA(succ(X), pred(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), succ(Y), Z) -> ISPLUS_IN_GGA(X, Y, Z) ISPLUS_IN_GGA(pred(X), pred(Y), pred(pred(Z))) -> ISPLUS_IN_GGA(X, Y, Z) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (128) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (129) Obligation: Q DP problem: The TRS P consists of the following rules: ISPLUS_IN_GGA(succ(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) ISPLUS_IN_GGA(succ(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) ISPLUS_IN_GGA(pred(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) ISPLUS_IN_GGA(pred(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (130) 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: *ISPLUS_IN_GGA(succ(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISPLUS_IN_GGA(succ(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISPLUS_IN_GGA(pred(X), succ(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISPLUS_IN_GGA(pred(X), pred(Y)) -> ISPLUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (131) YES ---------------------------------------- (132) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (133) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (134) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(zero, pred(Y), succ(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) ISMINUS_IN_GGA(zero, succ(Y), pred(Z)) -> ISMINUS_IN_GGA(zero, Y, Z) R is empty. The argument filtering Pi contains the following mapping: zero = zero succ(x1) = succ(x1) pred(x1) = pred(x1) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (135) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (136) Obligation: Q DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(zero, pred(Y)) -> ISMINUS_IN_GGA(zero, Y) ISMINUS_IN_GGA(zero, succ(Y)) -> ISMINUS_IN_GGA(zero, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (137) 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: *ISMINUS_IN_GGA(zero, pred(Y)) -> ISMINUS_IN_GGA(zero, Y) The graph contains the following edges 1 >= 1, 2 > 2 *ISMINUS_IN_GGA(zero, succ(Y)) -> ISMINUS_IN_GGA(zero, Y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (138) YES ---------------------------------------- (139) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (140) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (141) Obligation: Pi DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(succ(X), pred(Y), succ(succ(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(succ(X), succ(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), succ(Y), pred(pred(Z))) -> ISMINUS_IN_GGA(X, Y, Z) ISMINUS_IN_GGA(pred(X), pred(Y), Z) -> ISMINUS_IN_GGA(X, Y, Z) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISMINUS_IN_GGA(x1, x2, x3) = ISMINUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (142) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (143) Obligation: Q DP problem: The TRS P consists of the following rules: ISMINUS_IN_GGA(succ(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) ISMINUS_IN_GGA(succ(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) ISMINUS_IN_GGA(pred(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) ISMINUS_IN_GGA(pred(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (144) 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: *ISMINUS_IN_GGA(succ(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISMINUS_IN_GGA(succ(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISMINUS_IN_GGA(pred(X), succ(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISMINUS_IN_GGA(pred(X), pred(Y)) -> ISMINUS_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (145) YES ---------------------------------------- (146) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (147) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (148) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(pred(X), pred(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) ISTIMES_IN_GGA(pred(X), succ(Y), Z) -> ISTIMES_IN_GGA(pred(X), Y, A) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (149) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (150) Obligation: Q DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(pred(X), pred(Y)) -> ISTIMES_IN_GGA(pred(X), Y) ISTIMES_IN_GGA(pred(X), succ(Y)) -> ISTIMES_IN_GGA(pred(X), Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (151) 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: *ISTIMES_IN_GGA(pred(X), pred(Y)) -> ISTIMES_IN_GGA(pred(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 *ISTIMES_IN_GGA(pred(X), succ(Y)) -> ISTIMES_IN_GGA(pred(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (152) YES ---------------------------------------- (153) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (154) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (155) Obligation: Pi DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(succ(X), pred(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) ISTIMES_IN_GGA(succ(X), succ(Y), Z) -> ISTIMES_IN_GGA(succ(X), Y, A) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISTIMES_IN_GGA(x1, x2, x3) = ISTIMES_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (156) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (157) Obligation: Q DP problem: The TRS P consists of the following rules: ISTIMES_IN_GGA(succ(X), pred(Y)) -> ISTIMES_IN_GGA(succ(X), Y) ISTIMES_IN_GGA(succ(X), succ(Y)) -> ISTIMES_IN_GGA(succ(X), Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (158) 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: *ISTIMES_IN_GGA(succ(X), pred(Y)) -> ISTIMES_IN_GGA(succ(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 *ISTIMES_IN_GGA(succ(X), succ(Y)) -> ISTIMES_IN_GGA(succ(X), Y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (159) YES ---------------------------------------- (160) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (161) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (162) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_AG(pred(X), pred(Y)) -> ISGREATER_IN_AG(X, Y) ISGREATER_IN_AG(succ(X), succ(Y)) -> ISGREATER_IN_AG(X, Y) R is empty. The argument filtering Pi contains the following mapping: succ(x1) = succ(x1) pred(x1) = pred(x1) ISGREATER_IN_AG(x1, x2) = ISGREATER_IN_AG(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (163) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (164) Obligation: Q DP problem: The TRS P consists of the following rules: ISGREATER_IN_AG(pred(Y)) -> ISGREATER_IN_AG(Y) ISGREATER_IN_AG(succ(Y)) -> ISGREATER_IN_AG(Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (165) 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: *ISGREATER_IN_AG(pred(Y)) -> ISGREATER_IN_AG(Y) The graph contains the following edges 1 > 1 *ISGREATER_IN_AG(succ(Y)) -> ISGREATER_IN_AG(Y) The graph contains the following edges 1 > 1 ---------------------------------------- (166) YES ---------------------------------------- (167) Obligation: Pi DP problem: The TRS P consists of the following rules: ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (168) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (169) Obligation: Pi DP problem: The TRS P consists of the following rules: ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (170) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (171) Obligation: Q DP problem: The TRS P consists of the following rules: ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (172) 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: *ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISLESS_IN_GG(pred(X), pred(Y)) -> ISLESS_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (173) YES ---------------------------------------- (174) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, =_in_ga(zero, X)) =_in_ga(X, X) -> =_out_ga(X, X) U1_ag(X, Y, =_out_ga(zero, X)) -> U2_ag(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U2_ag(X, Y, =_out_ag(X1, X)) -> U3_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_ag(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U4_ag(X, Y, =_out_gg(X1, X2)) -> U5_ag(X, Y, =_in_gg(Y, succ(zero))) U5_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U3_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_ag(X, Y, isLess_in_gg(X1, X2)) isLess_in_gg(pred(X), zero) -> isLess_out_gg(pred(X), zero) isLess_in_gg(pred(X), succ(Y)) -> isLess_out_gg(pred(X), succ(Y)) isLess_in_gg(pred(X), pred(Y)) -> U60_gg(X, Y, isLess_in_gg(X, Y)) isLess_in_gg(zero, succ(Y)) -> isLess_out_gg(zero, succ(Y)) isLess_in_gg(succ(X), succ(Y)) -> U61_gg(X, Y, isLess_in_gg(X, Y)) U61_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U60_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U6_ag(X, Y, isLess_out_gg(X1, X2)) -> U7_ag(X, Y, =_in_gg(Y, succ(zero))) U7_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U8_ag(X, Y, =_in_ga(succ(zero), X)) U8_ag(X, Y, =_out_ga(succ(zero), X)) -> U9_ag(X, Y, =_in_ag(X1, X)) U9_ag(X, Y, =_out_ag(X1, X)) -> U10_ag(X, Y, X1, =_in_ag(X2, succ(zero))) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_ag(X, Y, =_in_gg(X1, X2)) U11_ag(X, Y, =_out_gg(X1, X2)) -> U12_ag(X, Y, =_in_gg(Y, succ(zero))) U12_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) U10_ag(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_ag(X, Y, isLess_in_gg(X1, X2)) U13_ag(X, Y, isLess_out_gg(X1, X2)) -> U14_ag(X, Y, =_in_gg(Y, succ(zero))) U14_ag(X, Y, =_out_gg(Y, succ(zero))) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U15_ag(X, Y, =_in_aa(X1, X)) =_in_aa(X, X) -> =_out_aa(X, X) U15_ag(X, Y, =_out_aa(X1, X)) -> U16_ag(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_ag(X, Y, isGreater_in_ag(X1, X2)) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U17_ag(X, Y, isGreater_out_ag(X1, X2)) -> U18_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, =_in_ga(zero, X)) U1_aa(X, Y, =_out_ga(zero, X)) -> U2_aa(X, Y, =_in_ag(X1, X)) U2_aa(X, Y, =_out_ag(X1, X)) -> U3_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U4_aa(X, Y, =_in_gg(X1, X2)) U4_aa(X, Y, =_out_gg(X1, X2)) -> U5_aa(X, Y, =_in_ag(Y, succ(zero))) U5_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U3_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U6_aa(X, Y, isLess_in_gg(X1, X2)) U6_aa(X, Y, isLess_out_gg(X1, X2)) -> U7_aa(X, Y, =_in_ag(Y, succ(zero))) U7_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U8_aa(X, Y, =_in_ga(succ(zero), X)) U8_aa(X, Y, =_out_ga(succ(zero), X)) -> U9_aa(X, Y, =_in_ag(X1, X)) U9_aa(X, Y, =_out_ag(X1, X)) -> U10_aa(X, Y, X1, =_in_ag(X2, succ(zero))) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U11_aa(X, Y, =_in_gg(X1, X2)) U11_aa(X, Y, =_out_gg(X1, X2)) -> U12_aa(X, Y, =_in_ag(Y, succ(zero))) U12_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) U10_aa(X, Y, X1, =_out_ag(X2, succ(zero))) -> U13_aa(X, Y, isLess_in_gg(X1, X2)) U13_aa(X, Y, isLess_out_gg(X1, X2)) -> U14_aa(X, Y, =_in_ag(Y, succ(zero))) U14_aa(X, Y, =_out_ag(Y, succ(zero))) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U15_aa(X, Y, =_in_aa(X1, X)) U15_aa(X, Y, =_out_aa(X1, X)) -> U16_aa(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_aa(X, Y, isGreater_in_ag(X1, X2)) U17_aa(X, Y, isGreater_out_ag(X1, X2)) -> U18_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U18_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_aa(X, Y, isTimes_in_gga(Y1, X, U)) isTimes_in_gga(X, zero, zero) -> isTimes_out_gga(X, zero, zero) isTimes_in_gga(zero, succ(Y), zero) -> isTimes_out_gga(zero, succ(Y), zero) isTimes_in_gga(zero, pred(Y), zero) -> isTimes_out_gga(zero, pred(Y), zero) isTimes_in_gga(succ(X), succ(Y), Z) -> U35_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(succ(X), pred(Y), Z) -> U37_gga(X, Y, Z, isTimes_in_gga(succ(X), Y, A)) isTimes_in_gga(pred(X), succ(Y), Z) -> U39_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) isTimes_in_gga(pred(X), pred(Y), Z) -> U41_gga(X, Y, Z, isTimes_in_gga(pred(X), Y, A)) U41_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U42_gga(X, Y, Z, isMinus_in_gga(A, pred(X), Z)) isMinus_in_gga(X, zero, X) -> isMinus_out_gga(X, zero, X) isMinus_in_gga(zero, succ(Y), pred(Z)) -> U29_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(zero, pred(Y), succ(Z)) -> U30_gga(Y, Z, isMinus_in_gga(zero, Y, Z)) isMinus_in_gga(succ(X), succ(Y), Z) -> U31_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(succ(X), pred(Y), succ(succ(Z))) -> U32_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), succ(Y), pred(pred(Z))) -> U33_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) isMinus_in_gga(pred(X), pred(Y), Z) -> U34_gga(X, Y, Z, isMinus_in_gga(X, Y, Z)) U34_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), pred(Y), Z) U33_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(pred(X), succ(Y), pred(pred(Z))) U32_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), pred(Y), succ(succ(Z))) U31_gga(X, Y, Z, isMinus_out_gga(X, Y, Z)) -> isMinus_out_gga(succ(X), succ(Y), Z) U30_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, pred(Y), succ(Z)) U29_gga(Y, Z, isMinus_out_gga(zero, Y, Z)) -> isMinus_out_gga(zero, succ(Y), pred(Z)) U42_gga(X, Y, Z, isMinus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), pred(Y), Z) U39_gga(X, Y, Z, isTimes_out_gga(pred(X), Y, A)) -> U40_gga(X, Y, Z, isPlus_in_gga(A, pred(X), Z)) isPlus_in_gga(zero, X, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero, succ(X)) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y), succ(succ(Z))) -> U25_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U26_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), zero, pred(X)) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y), Z) -> U27_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U28_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U28_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U27_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U26_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U25_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U40_gga(X, Y, Z, isPlus_out_gga(A, pred(X), Z)) -> isTimes_out_gga(pred(X), succ(Y), Z) U37_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U38_gga(X, Y, Z, isMinus_in_gga(A, succ(X), Z)) U38_gga(X, Y, Z, isMinus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), pred(Y), Z) U35_gga(X, Y, Z, isTimes_out_gga(succ(X), Y, A)) -> U36_gga(X, Y, Z, isPlus_in_gga(A, succ(X), Z)) U36_gga(X, Y, Z, isPlus_out_gga(A, succ(X), Z)) -> isTimes_out_gga(succ(X), succ(Y), Z) U19_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_aa(X, Y, =_in_ag(Y, U)) U20_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U16_aa(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_aa(X, Y, =_in_ag(X1, X2)) U21_aa(X, Y, =_out_ag(X1, X2)) -> U22_aa(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_aa(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_aa(X, Y, isTimes_in_gga(Y1, X, U)) U23_aa(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_aa(X, Y, =_in_ag(Y, U)) U24_aa(X, Y, =_out_ag(Y, U)) -> fact_out_aa(X, Y) U18_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U19_ag(X, Y, isTimes_in_gga(Y1, X, U)) U19_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U20_ag(X, Y, =_in_gg(Y, U)) U20_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) U16_ag(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_ag(X, Y, =_in_ag(X1, X2)) U21_ag(X, Y, =_out_ag(X1, X2)) -> U22_ag(X, Y, fact_in_aa(-(X, succ(zero)), Y1)) U22_ag(X, Y, fact_out_aa(-(X, succ(zero)), Y1)) -> U23_ag(X, Y, isTimes_in_gga(Y1, X, U)) U23_ag(X, Y, isTimes_out_gga(Y1, X, U)) -> U24_ag(X, Y, =_in_gg(Y, U)) U24_ag(X, Y, =_out_gg(Y, U)) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) =_in_ga(x1, x2) = =_in_ga(x1) =_out_ga(x1, x2) = =_out_ga(x2) zero = zero U2_ag(x1, x2, x3) = U2_ag(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U3_ag(x1, x2, x3, x4) = U3_ag(x1, x2, x3, x4) succ(x1) = succ(x1) U4_ag(x1, x2, x3) = U4_ag(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U5_ag(x1, x2, x3) = U5_ag(x1, x3) fact_out_ag(x1, x2) = fact_out_ag(x1) U6_ag(x1, x2, x3) = U6_ag(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) pred(x1) = pred(x1) isLess_out_gg(x1, x2) = isLess_out_gg U60_gg(x1, x2, x3) = U60_gg(x3) U61_gg(x1, x2, x3) = U61_gg(x3) U7_ag(x1, x2, x3) = U7_ag(x1, x3) U8_ag(x1, x2, x3) = U8_ag(x2, x3) U9_ag(x1, x2, x3) = U9_ag(x1, x2, x3) U10_ag(x1, x2, x3, x4) = U10_ag(x1, x2, x3, x4) U11_ag(x1, x2, x3) = U11_ag(x1, x2, x3) U12_ag(x1, x2, x3) = U12_ag(x1, x3) U13_ag(x1, x2, x3) = U13_ag(x1, x2, x3) U14_ag(x1, x2, x3) = U14_ag(x1, x3) U15_ag(x1, x2, x3) = U15_ag(x2, x3) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U16_ag(x1, x2, x3, x4) = U16_ag(x2, x4) U17_ag(x1, x2, x3) = U17_ag(x2, x3) isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) U18_ag(x1, x2, x3) = U18_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x1, x3) U3_aa(x1, x2, x3, x4) = U3_aa(x1, x3, x4) U4_aa(x1, x2, x3) = U4_aa(x1, x3) U5_aa(x1, x2, x3) = U5_aa(x1, x3) fact_out_aa(x1, x2) = fact_out_aa(x1, x2) U6_aa(x1, x2, x3) = U6_aa(x1, x3) U7_aa(x1, x2, x3) = U7_aa(x1, x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x1, x3) U10_aa(x1, x2, x3, x4) = U10_aa(x1, x3, x4) U11_aa(x1, x2, x3) = U11_aa(x1, x3) U12_aa(x1, x2, x3) = U12_aa(x1, x3) U13_aa(x1, x2, x3) = U13_aa(x1, x3) U14_aa(x1, x2, x3) = U14_aa(x1, x3) U15_aa(x1, x2, x3) = U15_aa(x3) U16_aa(x1, x2, x3, x4) = U16_aa(x4) U17_aa(x1, x2, x3) = U17_aa(x3) U18_aa(x1, x2, x3) = U18_aa(x3) -(x1, x2) = -(x1, x2) U19_aa(x1, x2, x3) = U19_aa(x1, x3) isTimes_in_gga(x1, x2, x3) = isTimes_in_gga(x1, x2) isTimes_out_gga(x1, x2, x3) = isTimes_out_gga(x3) U35_gga(x1, x2, x3, x4) = U35_gga(x1, x4) U37_gga(x1, x2, x3, x4) = U37_gga(x1, x4) U39_gga(x1, x2, x3, x4) = U39_gga(x1, x4) U41_gga(x1, x2, x3, x4) = U41_gga(x1, x4) U42_gga(x1, x2, x3, x4) = U42_gga(x4) isMinus_in_gga(x1, x2, x3) = isMinus_in_gga(x1, x2) isMinus_out_gga(x1, x2, x3) = isMinus_out_gga(x3) U29_gga(x1, x2, x3) = U29_gga(x3) U30_gga(x1, x2, x3) = U30_gga(x3) U31_gga(x1, x2, x3, x4) = U31_gga(x4) U32_gga(x1, x2, x3, x4) = U32_gga(x4) U33_gga(x1, x2, x3, x4) = U33_gga(x4) U34_gga(x1, x2, x3, x4) = U34_gga(x4) U40_gga(x1, x2, x3, x4) = U40_gga(x4) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U25_gga(x1, x2, x3, x4) = U25_gga(x4) U26_gga(x1, x2, x3, x4) = U26_gga(x4) U27_gga(x1, x2, x3, x4) = U27_gga(x4) U28_gga(x1, x2, x3, x4) = U28_gga(x4) U38_gga(x1, x2, x3, x4) = U38_gga(x4) U36_gga(x1, x2, x3, x4) = U36_gga(x4) U20_aa(x1, x2, x3) = U20_aa(x1, x3) U21_aa(x1, x2, x3) = U21_aa(x3) U22_aa(x1, x2, x3) = U22_aa(x3) U23_aa(x1, x2, x3) = U23_aa(x1, x3) U24_aa(x1, x2, x3) = U24_aa(x1, x3) U19_ag(x1, x2, x3) = U19_ag(x1, x2, x3) U20_ag(x1, x2, x3) = U20_ag(x1, x3) U21_ag(x1, x2, x3) = U21_ag(x2, x3) U22_ag(x1, x2, x3) = U22_ag(x2, x3) U23_ag(x1, x2, x3) = U23_ag(x1, x2, x3) U24_ag(x1, x2, x3) = U24_ag(x1, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U21_AA(x1, x2, x3) = U21_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (175) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (176) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U15_AA(X, Y, =_in_aa(X1, X)) U15_AA(X, Y, =_out_aa(X1, X)) -> U16_AA(X, Y, X1, =_in_ag(X2, succ(succ(zero)))) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U17_AA(X, Y, isGreater_in_ag(X1, X2)) U17_AA(X, Y, isGreater_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) U16_AA(X, Y, X1, =_out_ag(X2, succ(succ(zero)))) -> U21_AA(X, Y, =_in_ag(X1, X2)) U21_AA(X, Y, =_out_ag(X1, X2)) -> FACT_IN_AA(-(X, succ(zero)), Y1) The TRS R consists of the following rules: =_in_aa(X, X) -> =_out_aa(X, X) =_in_ag(X, X) -> =_out_ag(X, X) isGreater_in_ag(succ(X), zero) -> isGreater_out_ag(succ(X), zero) isGreater_in_ag(succ(X), pred(Y)) -> isGreater_out_ag(succ(X), pred(Y)) isGreater_in_ag(succ(X), succ(Y)) -> U58_ag(X, Y, isGreater_in_ag(X, Y)) isGreater_in_ag(zero, pred(Y)) -> isGreater_out_ag(zero, pred(Y)) isGreater_in_ag(pred(X), pred(Y)) -> U59_ag(X, Y, isGreater_in_ag(X, Y)) U58_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(succ(X), succ(Y)) U59_ag(X, Y, isGreater_out_ag(X, Y)) -> isGreater_out_ag(pred(X), pred(Y)) The argument filtering Pi contains the following mapping: zero = zero =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) succ(x1) = succ(x1) pred(x1) = pred(x1) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa isGreater_in_ag(x1, x2) = isGreater_in_ag(x2) isGreater_out_ag(x1, x2) = isGreater_out_ag U58_ag(x1, x2, x3) = U58_ag(x3) U59_ag(x1, x2, x3) = U59_ag(x3) -(x1, x2) = -(x1, x2) FACT_IN_AA(x1, x2) = FACT_IN_AA U15_AA(x1, x2, x3) = U15_AA(x3) U16_AA(x1, x2, x3, x4) = U16_AA(x4) U17_AA(x1, x2, x3) = U17_AA(x3) U21_AA(x1, x2, x3) = U21_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (177) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (178) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_aa -> =_out_aa =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(pred(Y)) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) isGreater_in_ag(pred(Y)) -> U59_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag U59_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) U59_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (179) 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. No dependency pairs are removed. The following rules are removed from R: isGreater_in_ag(pred(Y)) -> isGreater_out_ag isGreater_in_ag(pred(Y)) -> U59_ag(isGreater_in_ag(Y)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(=_in_aa) = 0 POL(=_in_ag(x_1)) = 2*x_1 POL(=_out_aa) = 0 POL(=_out_ag(x_1)) = 2*x_1 POL(FACT_IN_AA) = 0 POL(U15_AA(x_1)) = x_1 POL(U16_AA(x_1)) = 2*x_1 POL(U17_AA(x_1)) = 2*x_1 POL(U21_AA(x_1)) = x_1 POL(U58_ag(x_1)) = x_1 POL(U59_ag(x_1)) = x_1 POL(isGreater_in_ag(x_1)) = x_1 POL(isGreater_out_ag) = 0 POL(pred(x_1)) = 2*x_1 POL(succ(x_1)) = x_1 POL(zero) = 0 ---------------------------------------- (180) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U59_ag(isGreater_out_ag) -> isGreater_out_ag U58_ag(isGreater_out_ag) -> isGreater_out_ag =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) U59_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (181) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (182) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) U59_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (183) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. U59_ag(x0) ---------------------------------------- (184) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U15_AA(=_in_aa) U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (185) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule FACT_IN_AA -> U15_AA(=_in_aa) at position [0] we obtained the following new rules [LPAR04]: (FACT_IN_AA -> U15_AA(=_out_aa),FACT_IN_AA -> U15_AA(=_out_aa)) ---------------------------------------- (186) Obligation: Q DP problem: The TRS P consists of the following rules: U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (187) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (188) Obligation: Q DP problem: The TRS P consists of the following rules: U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: =_in_aa =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (189) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. =_in_aa ---------------------------------------- (190) Obligation: Q DP problem: The TRS P consists of the following rules: U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (191) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U15_AA(=_out_aa) -> U16_AA(=_in_ag(succ(succ(zero)))) at position [0] we obtained the following new rules [LPAR04]: (U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))),U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero))))) ---------------------------------------- (192) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (193) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(X2)) -> U21_AA(=_in_ag(X2)) at position [0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)),U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2))) ---------------------------------------- (194) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) The TRS R consists of the following rules: =_in_ag(X) -> =_out_ag(X) isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (195) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (196) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: =_in_ag(x0) isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (197) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. =_in_ag(x0) ---------------------------------------- (198) Obligation: Q DP problem: The TRS P consists of the following rules: U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (199) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U16_AA(=_out_ag(X2)) -> U17_AA(isGreater_in_ag(X2)) we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero))))) ---------------------------------------- (200) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (201) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_in_ag(succ(succ(zero)))) at position [0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_in_ag(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_in_ag(succ(zero))))) ---------------------------------------- (202) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_in_ag(succ(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (203) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_in_ag(succ(zero)))) at position [0,0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_in_ag(zero)))),U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_in_ag(zero))))) ---------------------------------------- (204) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_in_ag(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag isGreater_in_ag(succ(Y)) -> U58_ag(isGreater_in_ag(Y)) U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (205) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (206) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_in_ag(zero)))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (207) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_in_ag(zero)))) at position [0,0,0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_out_ag))),U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_out_ag)))) ---------------------------------------- (208) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_out_ag))) The TRS R consists of the following rules: isGreater_in_ag(zero) -> isGreater_out_ag U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (209) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (210) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_out_ag))) The TRS R consists of the following rules: U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: isGreater_in_ag(x0) U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (211) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. isGreater_in_ag(x0) ---------------------------------------- (212) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_out_ag))) The TRS R consists of the following rules: U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (213) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(U58_ag(isGreater_out_ag))) at position [0,0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_out_ag)),U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_out_ag))) ---------------------------------------- (214) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_out_ag)) The TRS R consists of the following rules: U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (215) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(U58_ag(isGreater_out_ag)) at position [0] we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag),U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag)) ---------------------------------------- (216) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) The TRS R consists of the following rules: U58_ag(isGreater_out_ag) -> isGreater_out_ag The set Q consists of the following terms: U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (217) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (218) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) R is empty. The set Q consists of the following terms: U58_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (219) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. U58_ag(x0) ---------------------------------------- (220) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (221) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U16_AA(=_out_ag(X2)) -> U21_AA(=_out_ag(X2)) we obtained the following new rules [LPAR04]: (U16_AA(=_out_ag(succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)))),U16_AA(=_out_ag(succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero))))) ---------------------------------------- (222) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA U21_AA(=_out_ag(X1)) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) U16_AA(=_out_ag(succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)))) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (223) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U21_AA(=_out_ag(X1)) -> FACT_IN_AA we obtained the following new rules [LPAR04]: (U21_AA(=_out_ag(succ(succ(zero)))) -> FACT_IN_AA,U21_AA(=_out_ag(succ(succ(zero)))) -> FACT_IN_AA) ---------------------------------------- (224) Obligation: Q DP problem: The TRS P consists of the following rules: U17_AA(isGreater_out_ag) -> FACT_IN_AA FACT_IN_AA -> U15_AA(=_out_aa) U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) U16_AA(=_out_ag(succ(succ(zero)))) -> U21_AA(=_out_ag(succ(succ(zero)))) U21_AA(=_out_ag(succ(succ(zero)))) -> FACT_IN_AA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (225) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by narrowing to the left: s = FACT_IN_AA evaluates to t =FACT_IN_AA Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence FACT_IN_AA -> U15_AA(=_out_aa) with rule FACT_IN_AA -> U15_AA(=_out_aa) at position [] and matcher [ ] U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) with rule U15_AA(=_out_aa) -> U16_AA(=_out_ag(succ(succ(zero)))) at position [] and matcher [ ] U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) with rule U16_AA(=_out_ag(succ(succ(zero)))) -> U17_AA(isGreater_out_ag) at position [] and matcher [ ] U17_AA(isGreater_out_ag) -> FACT_IN_AA with rule U17_AA(isGreater_out_ag) -> FACT_IN_AA Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence All these steps are and every following step will be a correct step w.r.t to Q. ---------------------------------------- (226) NO ---------------------------------------- (227) UnifyTransformerProof (EQUIVALENT) Added a fact for the built-in = predicate [PROLOG]. ---------------------------------------- (228) Obligation: Clauses: fact(X, Y) :- ','(;(is(0, X), is(1, X)), ','(=<(X, 1), =(Y, 1))). fact(X, Y) :- ','(>=(X, 2), ','(fact(-(X, 1), Y1), is(Y, *(Y1, X)))). =(X, X). Query: fact(a,g) ---------------------------------------- (229) OrTransformerProof (EQUIVALENT) Transformed all or-constructs[PROLOG]. ---------------------------------------- (230) Obligation: Clauses: fact(X, Y) :- ','(is(0, X), ','(=<(X, 1), =(Y, 1))). fact(X, Y) :- ','(is(1, X), ','(=<(X, 1), =(Y, 1))). fact(X, Y) :- ','(>=(X, 2), ','(fact(-(X, 1), Y1), is(Y, *(Y1, X)))). =(X, X). Query: fact(a,g) ---------------------------------------- (231) UndefinedPredicateHandlerProof (SOUND) Added facts for all undefined predicates [PROLOG]. ---------------------------------------- (232) Obligation: Clauses: fact(X, Y) :- ','(is(0, X), ','(=<(X, 1), =(Y, 1))). fact(X, Y) :- ','(is(1, X), ','(=<(X, 1), =(Y, 1))). fact(X, Y) :- ','(>=(X, 2), ','(fact(-(X, 1), Y1), is(Y, *(Y1, X)))). =(X, X). is(X0, X1). =<(X0, X1). >=(X0, X1). Query: fact(a,g) ---------------------------------------- (233) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: fact_in_2: (f,b) (f,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga(x1) 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag(x2) 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) fact_out_ag(x1, x2) = fact_out_ag(x2) U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x2, x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag(x2) 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x2, x3) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (234) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga(x1) 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag(x2) 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) fact_out_ag(x1, x2) = fact_out_ag(x2) U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x2, x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag(x2) 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x2, x3) ---------------------------------------- (235) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, is_in_ga(0, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(0, X) U1_AG(X, Y, is_out_ga(0, X)) -> U2_AG(X, Y, =<_in_ag(X, 1)) U1_AG(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AG(X, Y, =<_out_ag(X, 1)) -> U3_AG(X, Y, =_in_gg(Y, 1)) U2_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U4_AG(X, Y, is_in_ga(1, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(1, X) U4_AG(X, Y, is_out_ga(1, X)) -> U5_AG(X, Y, =<_in_ag(X, 1)) U4_AG(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AG(X, Y, =<_out_ag(X, 1)) -> U6_AG(X, Y, =_in_gg(Y, 1)) U5_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U7_AG(X, Y, >=_in_ag(X, 2)) FACT_IN_AG(X, Y) -> >=_IN_AG(X, 2) U7_AG(X, Y, >=_out_ag(X, 2)) -> U8_AG(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AG(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, is_in_ga(0, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(0, X) U1_AA(X, Y, is_out_ga(0, X)) -> U2_AA(X, Y, =<_in_ag(X, 1)) U1_AA(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AA(X, Y, =<_out_ag(X, 1)) -> U3_AA(X, Y, =_in_ag(Y, 1)) U2_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U4_AA(X, Y, is_in_ga(1, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(1, X) U4_AA(X, Y, is_out_ga(1, X)) -> U5_AA(X, Y, =<_in_ag(X, 1)) U4_AA(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AA(X, Y, =<_out_ag(X, 1)) -> U6_AA(X, Y, =_in_ag(Y, 1)) U5_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) FACT_IN_AA(X, Y) -> >=_IN_AG(X, 2) U7_AA(X, Y, >=_out_ag(X, 2)) -> U8_AA(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AA(X, Y, is_in_aa(Y, *(Y1, X))) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_AA(Y, *(Y1, X)) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AG(X, Y, is_in_ga(Y, *(Y1, X))) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_GA(Y, *(Y1, X)) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga(x1) 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag(x2) 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) fact_out_ag(x1, x2) = fact_out_ag(x2) U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x2, x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag(x2) 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x2, x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) IS_IN_GA(x1, x2) = IS_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x2, x3) =<_IN_AG(x1, x2) = =<_IN_AG(x2) U3_AG(x1, x2, x3) = U3_AG(x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U4_AG(x1, x2, x3) = U4_AG(x2, x3) U5_AG(x1, x2, x3) = U5_AG(x2, x3) U6_AG(x1, x2, x3) = U6_AG(x2, x3) U7_AG(x1, x2, x3) = U7_AG(x2, x3) >=_IN_AG(x1, x2) = >=_IN_AG(x2) U8_AG(x1, x2, x3) = U8_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x3) U3_AA(x1, x2, x3) = U3_AA(x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U4_AA(x1, x2, x3) = U4_AA(x3) U5_AA(x1, x2, x3) = U5_AA(x3) U6_AA(x1, x2, x3) = U6_AA(x3) U7_AA(x1, x2, x3) = U7_AA(x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x3) IS_IN_AA(x1, x2) = IS_IN_AA U9_AG(x1, x2, x3) = U9_AG(x2, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (236) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, is_in_ga(0, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(0, X) U1_AG(X, Y, is_out_ga(0, X)) -> U2_AG(X, Y, =<_in_ag(X, 1)) U1_AG(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AG(X, Y, =<_out_ag(X, 1)) -> U3_AG(X, Y, =_in_gg(Y, 1)) U2_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U4_AG(X, Y, is_in_ga(1, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(1, X) U4_AG(X, Y, is_out_ga(1, X)) -> U5_AG(X, Y, =<_in_ag(X, 1)) U4_AG(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AG(X, Y, =<_out_ag(X, 1)) -> U6_AG(X, Y, =_in_gg(Y, 1)) U5_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U7_AG(X, Y, >=_in_ag(X, 2)) FACT_IN_AG(X, Y) -> >=_IN_AG(X, 2) U7_AG(X, Y, >=_out_ag(X, 2)) -> U8_AG(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AG(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, is_in_ga(0, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(0, X) U1_AA(X, Y, is_out_ga(0, X)) -> U2_AA(X, Y, =<_in_ag(X, 1)) U1_AA(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AA(X, Y, =<_out_ag(X, 1)) -> U3_AA(X, Y, =_in_ag(Y, 1)) U2_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U4_AA(X, Y, is_in_ga(1, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(1, X) U4_AA(X, Y, is_out_ga(1, X)) -> U5_AA(X, Y, =<_in_ag(X, 1)) U4_AA(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AA(X, Y, =<_out_ag(X, 1)) -> U6_AA(X, Y, =_in_ag(Y, 1)) U5_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) FACT_IN_AA(X, Y) -> >=_IN_AG(X, 2) U7_AA(X, Y, >=_out_ag(X, 2)) -> U8_AA(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AA(X, Y, is_in_aa(Y, *(Y1, X))) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_AA(Y, *(Y1, X)) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AG(X, Y, is_in_ga(Y, *(Y1, X))) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_GA(Y, *(Y1, X)) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga(x1) 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag(x2) 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) fact_out_ag(x1, x2) = fact_out_ag(x2) U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x2, x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag(x2) 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x2, x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) IS_IN_GA(x1, x2) = IS_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x2, x3) =<_IN_AG(x1, x2) = =<_IN_AG(x2) U3_AG(x1, x2, x3) = U3_AG(x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U4_AG(x1, x2, x3) = U4_AG(x2, x3) U5_AG(x1, x2, x3) = U5_AG(x2, x3) U6_AG(x1, x2, x3) = U6_AG(x2, x3) U7_AG(x1, x2, x3) = U7_AG(x2, x3) >=_IN_AG(x1, x2) = >=_IN_AG(x2) U8_AG(x1, x2, x3) = U8_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x3) U3_AA(x1, x2, x3) = U3_AA(x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U4_AA(x1, x2, x3) = U4_AA(x3) U5_AA(x1, x2, x3) = U5_AA(x3) U6_AA(x1, x2, x3) = U6_AA(x3) U7_AA(x1, x2, x3) = U7_AA(x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x3) IS_IN_AA(x1, x2) = IS_IN_AA U9_AG(x1, x2, x3) = U9_AG(x2, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (237) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 34 less nodes. ---------------------------------------- (238) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga(x1) 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag(x2) 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) fact_out_ag(x1, x2) = fact_out_ag(x2) U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x2, x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag(x2) 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U7_AA(x1, x2, x3) = U7_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (239) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (240) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) The TRS R consists of the following rules: >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) The argument filtering Pi contains the following mapping: 1 = 1 >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag(x2) 2 = 2 FACT_IN_AA(x1, x2) = FACT_IN_AA U7_AA(x1, x2, x3) = U7_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (241) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (242) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U7_AA(>=_in_ag(2)) U7_AA(>=_out_ag(2)) -> FACT_IN_AA The TRS R consists of the following rules: >=_in_ag(X1) -> >=_out_ag(X1) The set Q consists of the following terms: >=_in_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (243) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule FACT_IN_AA -> U7_AA(>=_in_ag(2)) at position [0] we obtained the following new rules [LPAR04]: (FACT_IN_AA -> U7_AA(>=_out_ag(2)),FACT_IN_AA -> U7_AA(>=_out_ag(2))) ---------------------------------------- (244) Obligation: Q DP problem: The TRS P consists of the following rules: U7_AA(>=_out_ag(2)) -> FACT_IN_AA FACT_IN_AA -> U7_AA(>=_out_ag(2)) The TRS R consists of the following rules: >=_in_ag(X1) -> >=_out_ag(X1) The set Q consists of the following terms: >=_in_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (245) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (246) Obligation: Q DP problem: The TRS P consists of the following rules: U7_AA(>=_out_ag(2)) -> FACT_IN_AA FACT_IN_AA -> U7_AA(>=_out_ag(2)) R is empty. The set Q consists of the following terms: >=_in_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (247) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. >=_in_ag(x0) ---------------------------------------- (248) Obligation: Q DP problem: The TRS P consists of the following rules: U7_AA(>=_out_ag(2)) -> FACT_IN_AA FACT_IN_AA -> U7_AA(>=_out_ag(2)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (249) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by narrowing to the left: s = FACT_IN_AA evaluates to t =FACT_IN_AA Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence FACT_IN_AA -> U7_AA(>=_out_ag(2)) with rule FACT_IN_AA -> U7_AA(>=_out_ag(2)) at position [] and matcher [ ] U7_AA(>=_out_ag(2)) -> FACT_IN_AA with rule U7_AA(>=_out_ag(2)) -> FACT_IN_AA Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence All these steps are and every following step will be a correct step w.r.t to Q. ---------------------------------------- (250) NO ---------------------------------------- (251) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: fact_in_2: (f,b) (f,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg fact_out_ag(x1, x2) = fact_out_ag U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x3) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (252) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg fact_out_ag(x1, x2) = fact_out_ag U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x3) ---------------------------------------- (253) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, is_in_ga(0, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(0, X) U1_AG(X, Y, is_out_ga(0, X)) -> U2_AG(X, Y, =<_in_ag(X, 1)) U1_AG(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AG(X, Y, =<_out_ag(X, 1)) -> U3_AG(X, Y, =_in_gg(Y, 1)) U2_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U4_AG(X, Y, is_in_ga(1, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(1, X) U4_AG(X, Y, is_out_ga(1, X)) -> U5_AG(X, Y, =<_in_ag(X, 1)) U4_AG(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AG(X, Y, =<_out_ag(X, 1)) -> U6_AG(X, Y, =_in_gg(Y, 1)) U5_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U7_AG(X, Y, >=_in_ag(X, 2)) FACT_IN_AG(X, Y) -> >=_IN_AG(X, 2) U7_AG(X, Y, >=_out_ag(X, 2)) -> U8_AG(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AG(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, is_in_ga(0, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(0, X) U1_AA(X, Y, is_out_ga(0, X)) -> U2_AA(X, Y, =<_in_ag(X, 1)) U1_AA(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AA(X, Y, =<_out_ag(X, 1)) -> U3_AA(X, Y, =_in_ag(Y, 1)) U2_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U4_AA(X, Y, is_in_ga(1, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(1, X) U4_AA(X, Y, is_out_ga(1, X)) -> U5_AA(X, Y, =<_in_ag(X, 1)) U4_AA(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AA(X, Y, =<_out_ag(X, 1)) -> U6_AA(X, Y, =_in_ag(Y, 1)) U5_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) FACT_IN_AA(X, Y) -> >=_IN_AG(X, 2) U7_AA(X, Y, >=_out_ag(X, 2)) -> U8_AA(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AA(X, Y, is_in_aa(Y, *(Y1, X))) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_AA(Y, *(Y1, X)) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AG(X, Y, is_in_ga(Y, *(Y1, X))) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_GA(Y, *(Y1, X)) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg fact_out_ag(x1, x2) = fact_out_ag U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) IS_IN_GA(x1, x2) = IS_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x2, x3) =<_IN_AG(x1, x2) = =<_IN_AG(x2) U3_AG(x1, x2, x3) = U3_AG(x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U4_AG(x1, x2, x3) = U4_AG(x2, x3) U5_AG(x1, x2, x3) = U5_AG(x2, x3) U6_AG(x1, x2, x3) = U6_AG(x3) U7_AG(x1, x2, x3) = U7_AG(x2, x3) >=_IN_AG(x1, x2) = >=_IN_AG(x2) U8_AG(x1, x2, x3) = U8_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x3) U3_AA(x1, x2, x3) = U3_AA(x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U4_AA(x1, x2, x3) = U4_AA(x3) U5_AA(x1, x2, x3) = U5_AA(x3) U6_AA(x1, x2, x3) = U6_AA(x3) U7_AA(x1, x2, x3) = U7_AA(x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x3) IS_IN_AA(x1, x2) = IS_IN_AA U9_AG(x1, x2, x3) = U9_AG(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (254) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AG(X, Y) -> U1_AG(X, Y, is_in_ga(0, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(0, X) U1_AG(X, Y, is_out_ga(0, X)) -> U2_AG(X, Y, =<_in_ag(X, 1)) U1_AG(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AG(X, Y, =<_out_ag(X, 1)) -> U3_AG(X, Y, =_in_gg(Y, 1)) U2_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U4_AG(X, Y, is_in_ga(1, X)) FACT_IN_AG(X, Y) -> IS_IN_GA(1, X) U4_AG(X, Y, is_out_ga(1, X)) -> U5_AG(X, Y, =<_in_ag(X, 1)) U4_AG(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AG(X, Y, =<_out_ag(X, 1)) -> U6_AG(X, Y, =_in_gg(Y, 1)) U5_AG(X, Y, =<_out_ag(X, 1)) -> =_IN_GG(Y, 1) FACT_IN_AG(X, Y) -> U7_AG(X, Y, >=_in_ag(X, 2)) FACT_IN_AG(X, Y) -> >=_IN_AG(X, 2) U7_AG(X, Y, >=_out_ag(X, 2)) -> U8_AG(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AG(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) FACT_IN_AA(X, Y) -> U1_AA(X, Y, is_in_ga(0, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(0, X) U1_AA(X, Y, is_out_ga(0, X)) -> U2_AA(X, Y, =<_in_ag(X, 1)) U1_AA(X, Y, is_out_ga(0, X)) -> =<_IN_AG(X, 1) U2_AA(X, Y, =<_out_ag(X, 1)) -> U3_AA(X, Y, =_in_ag(Y, 1)) U2_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U4_AA(X, Y, is_in_ga(1, X)) FACT_IN_AA(X, Y) -> IS_IN_GA(1, X) U4_AA(X, Y, is_out_ga(1, X)) -> U5_AA(X, Y, =<_in_ag(X, 1)) U4_AA(X, Y, is_out_ga(1, X)) -> =<_IN_AG(X, 1) U5_AA(X, Y, =<_out_ag(X, 1)) -> U6_AA(X, Y, =_in_ag(Y, 1)) U5_AA(X, Y, =<_out_ag(X, 1)) -> =_IN_AG(Y, 1) FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) FACT_IN_AA(X, Y) -> >=_IN_AG(X, 2) U7_AA(X, Y, >=_out_ag(X, 2)) -> U8_AA(X, Y, fact_in_aa(-(X, 1), Y1)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AA(X, Y, is_in_aa(Y, *(Y1, X))) U8_AA(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_AA(Y, *(Y1, X)) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_AG(X, Y, is_in_ga(Y, *(Y1, X))) U8_AG(X, Y, fact_out_aa(-(X, 1), Y1)) -> IS_IN_GA(Y, *(Y1, X)) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg fact_out_ag(x1, x2) = fact_out_ag U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x3) FACT_IN_AG(x1, x2) = FACT_IN_AG(x2) U1_AG(x1, x2, x3) = U1_AG(x2, x3) IS_IN_GA(x1, x2) = IS_IN_GA(x1) U2_AG(x1, x2, x3) = U2_AG(x2, x3) =<_IN_AG(x1, x2) = =<_IN_AG(x2) U3_AG(x1, x2, x3) = U3_AG(x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U4_AG(x1, x2, x3) = U4_AG(x2, x3) U5_AG(x1, x2, x3) = U5_AG(x2, x3) U6_AG(x1, x2, x3) = U6_AG(x3) U7_AG(x1, x2, x3) = U7_AG(x2, x3) >=_IN_AG(x1, x2) = >=_IN_AG(x2) U8_AG(x1, x2, x3) = U8_AG(x2, x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U1_AA(x1, x2, x3) = U1_AA(x3) U2_AA(x1, x2, x3) = U2_AA(x3) U3_AA(x1, x2, x3) = U3_AA(x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U4_AA(x1, x2, x3) = U4_AA(x3) U5_AA(x1, x2, x3) = U5_AA(x3) U6_AA(x1, x2, x3) = U6_AA(x3) U7_AA(x1, x2, x3) = U7_AA(x3) U8_AA(x1, x2, x3) = U8_AA(x3) U9_AA(x1, x2, x3) = U9_AA(x3) IS_IN_AA(x1, x2) = IS_IN_AA U9_AG(x1, x2, x3) = U9_AG(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (255) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 34 less nodes. ---------------------------------------- (256) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) The TRS R consists of the following rules: fact_in_ag(X, Y) -> U1_ag(X, Y, is_in_ga(0, X)) is_in_ga(X0, X1) -> is_out_ga(X0, X1) U1_ag(X, Y, is_out_ga(0, X)) -> U2_ag(X, Y, =<_in_ag(X, 1)) =<_in_ag(X0, X1) -> =<_out_ag(X0, X1) U2_ag(X, Y, =<_out_ag(X, 1)) -> U3_ag(X, Y, =_in_gg(Y, 1)) =_in_gg(X, X) -> =_out_gg(X, X) U3_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U4_ag(X, Y, is_in_ga(1, X)) U4_ag(X, Y, is_out_ga(1, X)) -> U5_ag(X, Y, =<_in_ag(X, 1)) U5_ag(X, Y, =<_out_ag(X, 1)) -> U6_ag(X, Y, =_in_gg(Y, 1)) U6_ag(X, Y, =_out_gg(Y, 1)) -> fact_out_ag(X, Y) fact_in_ag(X, Y) -> U7_ag(X, Y, >=_in_ag(X, 2)) >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) U7_ag(X, Y, >=_out_ag(X, 2)) -> U8_ag(X, Y, fact_in_aa(-(X, 1), Y1)) fact_in_aa(X, Y) -> U1_aa(X, Y, is_in_ga(0, X)) U1_aa(X, Y, is_out_ga(0, X)) -> U2_aa(X, Y, =<_in_ag(X, 1)) U2_aa(X, Y, =<_out_ag(X, 1)) -> U3_aa(X, Y, =_in_ag(Y, 1)) =_in_ag(X, X) -> =_out_ag(X, X) U3_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U4_aa(X, Y, is_in_ga(1, X)) U4_aa(X, Y, is_out_ga(1, X)) -> U5_aa(X, Y, =<_in_ag(X, 1)) U5_aa(X, Y, =<_out_ag(X, 1)) -> U6_aa(X, Y, =_in_ag(Y, 1)) U6_aa(X, Y, =_out_ag(Y, 1)) -> fact_out_aa(X, Y) fact_in_aa(X, Y) -> U7_aa(X, Y, >=_in_ag(X, 2)) U7_aa(X, Y, >=_out_ag(X, 2)) -> U8_aa(X, Y, fact_in_aa(-(X, 1), Y1)) U8_aa(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_aa(X, Y, is_in_aa(Y, *(Y1, X))) is_in_aa(X0, X1) -> is_out_aa(X0, X1) U9_aa(X, Y, is_out_aa(Y, *(Y1, X))) -> fact_out_aa(X, Y) U8_ag(X, Y, fact_out_aa(-(X, 1), Y1)) -> U9_ag(X, Y, is_in_ga(Y, *(Y1, X))) U9_ag(X, Y, is_out_ga(Y, *(Y1, X))) -> fact_out_ag(X, Y) The argument filtering Pi contains the following mapping: fact_in_ag(x1, x2) = fact_in_ag(x2) U1_ag(x1, x2, x3) = U1_ag(x2, x3) is_in_ga(x1, x2) = is_in_ga(x1) is_out_ga(x1, x2) = is_out_ga 0 = 0 U2_ag(x1, x2, x3) = U2_ag(x2, x3) =<_in_ag(x1, x2) = =<_in_ag(x2) =<_out_ag(x1, x2) = =<_out_ag 1 = 1 U3_ag(x1, x2, x3) = U3_ag(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg fact_out_ag(x1, x2) = fact_out_ag U4_ag(x1, x2, x3) = U4_ag(x2, x3) U5_ag(x1, x2, x3) = U5_ag(x2, x3) U6_ag(x1, x2, x3) = U6_ag(x3) U7_ag(x1, x2, x3) = U7_ag(x2, x3) >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag 2 = 2 U8_ag(x1, x2, x3) = U8_ag(x2, x3) fact_in_aa(x1, x2) = fact_in_aa U1_aa(x1, x2, x3) = U1_aa(x3) U2_aa(x1, x2, x3) = U2_aa(x3) U3_aa(x1, x2, x3) = U3_aa(x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) fact_out_aa(x1, x2) = fact_out_aa U4_aa(x1, x2, x3) = U4_aa(x3) U5_aa(x1, x2, x3) = U5_aa(x3) U6_aa(x1, x2, x3) = U6_aa(x3) U7_aa(x1, x2, x3) = U7_aa(x3) U8_aa(x1, x2, x3) = U8_aa(x3) U9_aa(x1, x2, x3) = U9_aa(x3) is_in_aa(x1, x2) = is_in_aa is_out_aa(x1, x2) = is_out_aa *(x1, x2) = *(x2) U9_ag(x1, x2, x3) = U9_ag(x3) FACT_IN_AA(x1, x2) = FACT_IN_AA U7_AA(x1, x2, x3) = U7_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (257) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (258) Obligation: Pi DP problem: The TRS P consists of the following rules: FACT_IN_AA(X, Y) -> U7_AA(X, Y, >=_in_ag(X, 2)) U7_AA(X, Y, >=_out_ag(X, 2)) -> FACT_IN_AA(-(X, 1), Y1) The TRS R consists of the following rules: >=_in_ag(X0, X1) -> >=_out_ag(X0, X1) The argument filtering Pi contains the following mapping: 1 = 1 >=_in_ag(x1, x2) = >=_in_ag(x2) >=_out_ag(x1, x2) = >=_out_ag 2 = 2 FACT_IN_AA(x1, x2) = FACT_IN_AA U7_AA(x1, x2, x3) = U7_AA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (259) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (260) Obligation: Q DP problem: The TRS P consists of the following rules: FACT_IN_AA -> U7_AA(>=_in_ag(2)) U7_AA(>=_out_ag) -> FACT_IN_AA The TRS R consists of the following rules: >=_in_ag(X1) -> >=_out_ag The set Q consists of the following terms: >=_in_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (261) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule FACT_IN_AA -> U7_AA(>=_in_ag(2)) at position [0] we obtained the following new rules [LPAR04]: (FACT_IN_AA -> U7_AA(>=_out_ag),FACT_IN_AA -> U7_AA(>=_out_ag)) ---------------------------------------- (262) Obligation: Q DP problem: The TRS P consists of the following rules: U7_AA(>=_out_ag) -> FACT_IN_AA FACT_IN_AA -> U7_AA(>=_out_ag) The TRS R consists of the following rules: >=_in_ag(X1) -> >=_out_ag The set Q consists of the following terms: >=_in_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (263) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (264) Obligation: Q DP problem: The TRS P consists of the following rules: U7_AA(>=_out_ag) -> FACT_IN_AA FACT_IN_AA -> U7_AA(>=_out_ag) R is empty. The set Q consists of the following terms: >=_in_ag(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (265) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. >=_in_ag(x0) ---------------------------------------- (266) Obligation: Q DP problem: The TRS P consists of the following rules: U7_AA(>=_out_ag) -> FACT_IN_AA FACT_IN_AA -> U7_AA(>=_out_ag) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (267) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by narrowing to the left: s = FACT_IN_AA evaluates to t =FACT_IN_AA Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence FACT_IN_AA -> U7_AA(>=_out_ag) with rule FACT_IN_AA -> U7_AA(>=_out_ag) at position [] and matcher [ ] U7_AA(>=_out_ag) -> FACT_IN_AA with rule U7_AA(>=_out_ag) -> FACT_IN_AA Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence All these steps are and every following step will be a correct step w.r.t to Q. ---------------------------------------- (268) NO