/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern test_fun(g,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, 3 ms] (8) PiTRS (9) DependencyPairsProof [EQUIVALENT, 40 ms] (10) PiDP (11) DependencyGraphProof [EQUIVALENT, 0 ms] (12) AND (13) PiDP (14) UsableRulesProof [EQUIVALENT, 0 ms] (15) PiDP (16) PiDPToQDPProof [EQUIVALENT, 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 [EQUIVALENT, 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) TransformationProof [EQUIVALENT, 0 ms] (40) QDP (41) TransformationProof [EQUIVALENT, 0 ms] (42) QDP (43) TransformationProof [EQUIVALENT, 0 ms] (44) QDP (45) UsableRulesProof [EQUIVALENT, 0 ms] (46) QDP (47) QReductionProof [EQUIVALENT, 0 ms] (48) QDP (49) TransformationProof [EQUIVALENT, 0 ms] (50) QDP (51) TransformationProof [EQUIVALENT, 0 ms] (52) QDP (53) TransformationProof [EQUIVALENT, 0 ms] (54) QDP (55) TransformationProof [EQUIVALENT, 0 ms] (56) QDP (57) PrologToPiTRSProof [SOUND, 11 ms] (58) PiTRS (59) DependencyPairsProof [EQUIVALENT, 24 ms] (60) PiDP (61) DependencyGraphProof [EQUIVALENT, 0 ms] (62) AND (63) PiDP (64) UsableRulesProof [EQUIVALENT, 0 ms] (65) PiDP (66) PiDPToQDPProof [EQUIVALENT, 0 ms] (67) QDP (68) QDPSizeChangeProof [EQUIVALENT, 0 ms] (69) YES (70) PiDP (71) UsableRulesProof [EQUIVALENT, 0 ms] (72) PiDP (73) PiDPToQDPProof [SOUND, 0 ms] (74) QDP (75) QDPSizeChangeProof [EQUIVALENT, 0 ms] (76) YES (77) PiDP (78) UsableRulesProof [EQUIVALENT, 0 ms] (79) PiDP (80) PiDPToQDPProof [EQUIVALENT, 0 ms] (81) QDP (82) QDPSizeChangeProof [EQUIVALENT, 0 ms] (83) YES (84) PiDP (85) UsableRulesProof [EQUIVALENT, 0 ms] (86) PiDP (87) PiDPToQDPProof [SOUND, 0 ms] (88) QDP (89) TransformationProof [EQUIVALENT, 0 ms] (90) QDP (91) TransformationProof [EQUIVALENT, 0 ms] (92) QDP (93) TransformationProof [EQUIVALENT, 0 ms] (94) QDP (95) UsableRulesProof [EQUIVALENT, 0 ms] (96) QDP (97) QReductionProof [EQUIVALENT, 0 ms] (98) QDP (99) TransformationProof [EQUIVALENT, 0 ms] (100) QDP (101) TransformationProof [EQUIVALENT, 0 ms] (102) QDP (103) TransformationProof [EQUIVALENT, 0 ms] (104) QDP (105) UndefinedPredicateHandlerProof [SOUND, 0 ms] (106) Prolog (107) PrologToPiTRSProof [SOUND, 2 ms] (108) PiTRS (109) DependencyPairsProof [EQUIVALENT, 0 ms] (110) PiDP (111) DependencyGraphProof [EQUIVALENT, 0 ms] (112) PiDP (113) UsableRulesProof [EQUIVALENT, 0 ms] (114) PiDP (115) PiDPToQDPProof [SOUND, 0 ms] (116) QDP (117) TransformationProof [EQUIVALENT, 0 ms] (118) QDP (119) UsableRulesProof [EQUIVALENT, 0 ms] (120) QDP (121) QReductionProof [EQUIVALENT, 0 ms] (122) QDP (123) TransformationProof [EQUIVALENT, 0 ms] (124) QDP (125) UsableRulesProof [EQUIVALENT, 0 ms] (126) QDP (127) QReductionProof [EQUIVALENT, 0 ms] (128) QDP (129) NonTerminationLoopProof [COMPLETE, 0 ms] (130) NO (131) PrologToPiTRSProof [SOUND, 13 ms] (132) PiTRS (133) DependencyPairsProof [EQUIVALENT, 0 ms] (134) PiDP (135) DependencyGraphProof [EQUIVALENT, 0 ms] (136) PiDP (137) UsableRulesProof [EQUIVALENT, 0 ms] (138) PiDP (139) PiDPToQDPProof [SOUND, 0 ms] (140) QDP (141) TransformationProof [EQUIVALENT, 0 ms] (142) QDP (143) UsableRulesProof [EQUIVALENT, 0 ms] (144) QDP (145) QReductionProof [EQUIVALENT, 0 ms] (146) QDP (147) TransformationProof [EQUIVALENT, 0 ms] (148) QDP (149) UsableRulesProof [EQUIVALENT, 0 ms] (150) QDP (151) QReductionProof [EQUIVALENT, 0 ms] (152) QDP (153) PrologToDTProblemTransformerProof [SOUND, 32 ms] (154) TRIPLES (155) TriplesToPiDPProof [SOUND, 0 ms] (156) PiDP (157) DependencyGraphProof [EQUIVALENT, 0 ms] (158) PiDP (159) PiDPToQDPProof [SOUND, 0 ms] (160) QDP (161) NonTerminationLoopProof [COMPLETE, 0 ms] (162) NO (163) PrologToIRSwTTransformerProof [SOUND, 49 ms] (164) IRSwT (165) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (166) IRSwT (167) IntTRSCompressionProof [EQUIVALENT, 32 ms] (168) IRSwT (169) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (170) IRSwT (171) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (172) IRSwT (173) IntTRSCompressionProof [EQUIVALENT, 0 ms] (174) IRSwT (175) IRSwTToIntTRSProof [SOUND, 0 ms] (176) IRSwT (177) IntTRSCompressionProof [EQUIVALENT, 0 ms] (178) IRSwT (179) IntTRSPeriodicNontermProof [COMPLETE, 6 ms] (180) NO ---------------------------------------- (0) Obligation: Clauses: test_fun(X, Y) :- ','(>(X, 0), loop(X, Y)). loop(X, Y) :- ','(>(X, Y), ','(is(Y1, +(Y, X)), loop(X, Y1))). loop(X, Y) :- =<(X, Y). Query: test_fun(g,g) ---------------------------------------- (1) IntegerArithmeticTransformerProof (SOUND) Added definitions of predefined predicates [PROLOG]. ---------------------------------------- (2) Obligation: Clauses: test_fun(X, Y) :- ','(=(X1, X), ','(=(X2, zero), ','(isGreater(X1, X2), loop(X, Y)))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), ','(isGreater(X1, X2), ','(isPlus(Y, X, U), ','(=(Y1, U), loop(X, Y1)))))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), ;(=(X1, X2), isLess(X1, X2)))). 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: test_fun(g,g) ---------------------------------------- (3) UnifyTransformerProof (EQUIVALENT) Added a fact for the built-in = predicate [PROLOG]. ---------------------------------------- (4) Obligation: Clauses: test_fun(X, Y) :- ','(=(X1, X), ','(=(X2, zero), ','(isGreater(X1, X2), loop(X, Y)))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), ','(isGreater(X1, X2), ','(isPlus(Y, X, U), ','(=(Y1, U), loop(X, Y1)))))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), ;(=(X1, X2), isLess(X1, X2)))). 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: test_fun(g,g) ---------------------------------------- (5) OrTransformerProof (EQUIVALENT) Transformed all or-constructs[PROLOG]. ---------------------------------------- (6) Obligation: Clauses: test_fun(X, Y) :- ','(=(X1, X), ','(=(X2, zero), ','(isGreater(X1, X2), loop(X, Y)))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), ','(isGreater(X1, X2), ','(isPlus(Y, X, U), ','(=(Y1, U), loop(X, Y1)))))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), =(X1, X2))). loop(X, Y) :- ','(=(X1, X), ','(=(X2, Y), isLess(X1, X2))). 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: test_fun(g,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: test_fun_in_2: (b,b) isGreater_in_2: (b,b) loop_in_2: (b,b) isPlus_in_3: (b,b,f) isLess_in_2: (b,b) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (8) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) ---------------------------------------- (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: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, =_in_ag(X1, X)) TEST_FUN_IN_GG(X, Y) -> =_IN_AG(X1, X) U1_GG(X, Y, =_out_ag(X1, X)) -> U2_GG(X, Y, X1, =_in_ag(X2, zero)) U1_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, zero) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> U3_GG(X, Y, isGreater_in_gg(X1, X2)) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> ISGREATER_IN_GG(X1, X2) ISGREATER_IN_GG(succ(X), succ(Y)) -> U46_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(pred(X), pred(Y)) -> U47_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> U4_GG(X, Y, loop_in_gg(X, Y)) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) LOOP_IN_GG(X, Y) -> =_IN_AG(X1, X) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) U5_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, Y) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISGREATER_IN_GG(X1, X2) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> ISPLUS_IN_GGA(Y, X, U) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U13_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) -> U14_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) -> U15_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))) -> U16_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) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> =_IN_AG(Y1, U) U9_GG(X, Y, =_out_ag(Y1, U)) -> U10_GG(X, Y, loop_in_gg(X, Y1)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U11_GG(X, Y, =_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> =_IN_GG(X1, X2) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U12_GG(X, Y, isLess_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U48_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)) -> U49_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U2_GG(x1, x2, x3, x4) = U2_GG(x1, x2, x3, x4) U3_GG(x1, x2, x3) = U3_GG(x1, x2, x3) ISGREATER_IN_GG(x1, x2) = ISGREATER_IN_GG(x1, x2) U46_GG(x1, x2, x3) = U46_GG(x1, x2, x3) U47_GG(x1, x2, x3) = U47_GG(x1, x2, x3) U4_GG(x1, x2, x3) = U4_GG(x1, x2, x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x2, x3) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U13_GGA(x1, x2, x3, x4) = U13_GGA(x1, x2, x4) U14_GGA(x1, x2, x3, x4) = U14_GGA(x1, x2, x4) U15_GGA(x1, x2, x3, x4) = U15_GGA(x1, x2, x4) U16_GGA(x1, x2, x3, x4) = U16_GGA(x1, x2, x4) U9_GG(x1, x2, x3) = U9_GG(x1, x2, x3) U10_GG(x1, x2, x3) = U10_GG(x1, x2, x3) U11_GG(x1, x2, x3) = U11_GG(x1, x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U12_GG(x1, x2, x3) = U12_GG(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U48_GG(x1, x2, x3) = U48_GG(x1, x2, x3) U49_GG(x1, x2, x3) = U49_GG(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: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, =_in_ag(X1, X)) TEST_FUN_IN_GG(X, Y) -> =_IN_AG(X1, X) U1_GG(X, Y, =_out_ag(X1, X)) -> U2_GG(X, Y, X1, =_in_ag(X2, zero)) U1_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, zero) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> U3_GG(X, Y, isGreater_in_gg(X1, X2)) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> ISGREATER_IN_GG(X1, X2) ISGREATER_IN_GG(succ(X), succ(Y)) -> U46_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(pred(X), pred(Y)) -> U47_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> U4_GG(X, Y, loop_in_gg(X, Y)) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) LOOP_IN_GG(X, Y) -> =_IN_AG(X1, X) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) U5_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, Y) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISGREATER_IN_GG(X1, X2) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> ISPLUS_IN_GGA(Y, X, U) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U13_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) -> U14_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) -> U15_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))) -> U16_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) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> =_IN_AG(Y1, U) U9_GG(X, Y, =_out_ag(Y1, U)) -> U10_GG(X, Y, loop_in_gg(X, Y1)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U11_GG(X, Y, =_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> =_IN_GG(X1, X2) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U12_GG(X, Y, isLess_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U48_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)) -> U49_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U2_GG(x1, x2, x3, x4) = U2_GG(x1, x2, x3, x4) U3_GG(x1, x2, x3) = U3_GG(x1, x2, x3) ISGREATER_IN_GG(x1, x2) = ISGREATER_IN_GG(x1, x2) U46_GG(x1, x2, x3) = U46_GG(x1, x2, x3) U47_GG(x1, x2, x3) = U47_GG(x1, x2, x3) U4_GG(x1, x2, x3) = U4_GG(x1, x2, x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x2, x3) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U13_GGA(x1, x2, x3, x4) = U13_GGA(x1, x2, x4) U14_GGA(x1, x2, x3, x4) = U14_GGA(x1, x2, x4) U15_GGA(x1, x2, x3, x4) = U15_GGA(x1, x2, x4) U16_GGA(x1, x2, x3, x4) = U16_GGA(x1, x2, x4) U9_GG(x1, x2, x3) = U9_GG(x1, x2, x3) U10_GG(x1, x2, x3) = U10_GG(x1, x2, x3) U11_GG(x1, x2, x3) = U11_GG(x1, x2, x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U12_GG(x1, x2, x3) = U12_GG(x1, x2, x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U48_GG(x1, x2, x3) = U48_GG(x1, x2, x3) U49_GG(x1, x2, x3) = U49_GG(x1, x2, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (11) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 4 SCCs with 26 less nodes. ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) 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: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(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: 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 ---------------------------------------- (16) PiDPToQDPProof (EQUIVALENT) 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: 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. ---------------------------------------- (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: *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 ---------------------------------------- (19) YES ---------------------------------------- (20) 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: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_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: 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 ---------------------------------------- (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: 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. ---------------------------------------- (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: *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 ---------------------------------------- (26) YES ---------------------------------------- (27) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) ISGREATER_IN_GG(x1, x2) = ISGREATER_IN_GG(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: ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (30) PiDPToQDPProof (EQUIVALENT) 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: ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(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: *ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(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: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) U9_gg(x1, x2, x3) = U9_gg(x1, x2, x3) U10_gg(x1, x2, x3) = U10_gg(x1, x2, x3) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U11_gg(x1, x2, x3) = U11_gg(x1, x2, x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg(x1, x2) U12_gg(x1, x2, x3) = U12_gg(x1, x2, x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg(x1, x2) U48_gg(x1, x2, x3) = U48_gg(x1, x2, x3) U49_gg(x1, x2, x3) = U49_gg(x1, x2, x3) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x2, x3) U9_GG(x1, x2, x3) = U9_GG(x1, x2, x3) 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: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) =_in_ag(X, X) -> =_out_ag(X, X) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) The argument filtering Pi contains the following mapping: =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1, x2) zero = zero isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg(x1, x2) pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x1, x2, x3) U47_gg(x1, x2, x3) = U47_gg(x1, x2, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x1, x2, x3) U13_gga(x1, x2, x3, x4) = U13_gga(x1, x2, x4) U14_gga(x1, x2, x3, x4) = U14_gga(x1, x2, x4) U15_gga(x1, x2, x3, x4) = U15_gga(x1, x2, x4) U16_gga(x1, x2, x3, x4) = U16_gga(x1, x2, x4) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x2, x3) U9_GG(x1, x2, x3) = U9_GG(x1, x2, x3) 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: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(U)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(Y)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X, X) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (39) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(U)) at position [2] we obtained the following new rules [LPAR04]: (U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)),U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U))) ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(Y)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X, X) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (41) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X)) at position [2] we obtained the following new rules [LPAR04]: (LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)),LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X))) ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(Y)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X, X) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (43) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(Y)) at position [3] we obtained the following new rules [LPAR04]: (U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)),U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y))) ---------------------------------------- (44) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X, X) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (45) 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. ---------------------------------------- (46) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (47) 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) ---------------------------------------- (48) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (49) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) we obtained the following new rules [LPAR04]: (U6_GG(z0, z1, z2, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)),U6_GG(z0, z1, z2, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1))) ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)) U6_GG(z0, z1, z2, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (51) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) we obtained the following new rules [LPAR04]: (U9_GG(z0, z1, =_out_ag(z2, z2)) -> LOOP_IN_GG(z0, z2),U9_GG(z0, z1, =_out_ag(z2, z2)) -> LOOP_IN_GG(z0, z2)) ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)) U6_GG(z0, z1, z2, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) U9_GG(z0, z1, =_out_ag(z2, z2)) -> LOOP_IN_GG(z0, z2) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (53) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_out_ag(Y, Y)) we obtained the following new rules [LPAR04]: (U5_GG(z0, z1, =_out_ag(z0, z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1, z1)),U5_GG(z0, z1, =_out_ag(z0, z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1, z1))) ---------------------------------------- (54) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U6_GG(z0, z1, z2, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) U9_GG(z0, z1, =_out_ag(z2, z2)) -> LOOP_IN_GG(z0, z2) U5_GG(z0, z1, =_out_ag(z0, z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1, z1)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (55) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U6_GG(z0, z1, z2, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) we obtained the following new rules [LPAR04]: (U6_GG(z0, z1, z0, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z0, z1)),U6_GG(z0, z1, z0, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z0, z1))) ---------------------------------------- (56) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_out_ag(U, U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X, X)) U9_GG(z0, z1, =_out_ag(z2, z2)) -> LOOP_IN_GG(z0, z2) U5_GG(z0, z1, =_out_ag(z0, z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1, z1)) U6_GG(z0, z1, z0, =_out_ag(z1, z1)) -> U7_GG(z0, z1, isGreater_in_gg(z0, z1)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(zero, X, X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X), zero, succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X), zero, pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(X, Y, isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(X, Y, isPlus_in_gga(X, Y)) U16_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0, x1, x2) U47_gg(x0, x1, x2) U13_gga(x0, x1, x2) U14_gga(x0, x1, x2) U15_gga(x0, x1, x2) U16_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (57) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: test_fun_in_2: (b,b) isGreater_in_2: (b,b) loop_in_2: (b,b) isPlus_in_3: (b,b,f) isLess_in_2: (b,b) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (58) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg ---------------------------------------- (59) 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: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, =_in_ag(X1, X)) TEST_FUN_IN_GG(X, Y) -> =_IN_AG(X1, X) U1_GG(X, Y, =_out_ag(X1, X)) -> U2_GG(X, Y, X1, =_in_ag(X2, zero)) U1_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, zero) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> U3_GG(X, Y, isGreater_in_gg(X1, X2)) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> ISGREATER_IN_GG(X1, X2) ISGREATER_IN_GG(succ(X), succ(Y)) -> U46_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(pred(X), pred(Y)) -> U47_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> U4_GG(X, Y, loop_in_gg(X, Y)) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) LOOP_IN_GG(X, Y) -> =_IN_AG(X1, X) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) U5_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, Y) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISGREATER_IN_GG(X1, X2) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> ISPLUS_IN_GGA(Y, X, U) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U13_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) -> U14_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) -> U15_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))) -> U16_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) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> =_IN_AG(Y1, U) U9_GG(X, Y, =_out_ag(Y1, U)) -> U10_GG(X, Y, loop_in_gg(X, Y1)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U11_GG(X, Y, =_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> =_IN_GG(X1, X2) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U12_GG(X, Y, isLess_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U48_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)) -> U49_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U2_GG(x1, x2, x3, x4) = U2_GG(x1, x2, x3, x4) U3_GG(x1, x2, x3) = U3_GG(x1, x2, x3) ISGREATER_IN_GG(x1, x2) = ISGREATER_IN_GG(x1, x2) U46_GG(x1, x2, x3) = U46_GG(x3) U47_GG(x1, x2, x3) = U47_GG(x3) U4_GG(x1, x2, x3) = U4_GG(x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x3) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U13_GGA(x1, x2, x3, x4) = U13_GGA(x4) U14_GGA(x1, x2, x3, x4) = U14_GGA(x4) U15_GGA(x1, x2, x3, x4) = U15_GGA(x4) U16_GGA(x1, x2, x3, x4) = U16_GGA(x4) U9_GG(x1, x2, x3) = U9_GG(x1, x3) U10_GG(x1, x2, x3) = U10_GG(x3) U11_GG(x1, x2, x3) = U11_GG(x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U12_GG(x1, x2, x3) = U12_GG(x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U48_GG(x1, x2, x3) = U48_GG(x3) U49_GG(x1, x2, x3) = U49_GG(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (60) Obligation: Pi DP problem: The TRS P consists of the following rules: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, =_in_ag(X1, X)) TEST_FUN_IN_GG(X, Y) -> =_IN_AG(X1, X) U1_GG(X, Y, =_out_ag(X1, X)) -> U2_GG(X, Y, X1, =_in_ag(X2, zero)) U1_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, zero) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> U3_GG(X, Y, isGreater_in_gg(X1, X2)) U2_GG(X, Y, X1, =_out_ag(X2, zero)) -> ISGREATER_IN_GG(X1, X2) ISGREATER_IN_GG(succ(X), succ(Y)) -> U46_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(pred(X), pred(Y)) -> U47_GG(X, Y, isGreater_in_gg(X, Y)) ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> U4_GG(X, Y, loop_in_gg(X, Y)) U3_GG(X, Y, isGreater_out_gg(X1, X2)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) LOOP_IN_GG(X, Y) -> =_IN_AG(X1, X) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) U5_GG(X, Y, =_out_ag(X1, X)) -> =_IN_AG(X2, Y) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISGREATER_IN_GG(X1, X2) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> ISPLUS_IN_GGA(Y, X, U) ISPLUS_IN_GGA(succ(X), succ(Y), succ(succ(Z))) -> U13_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) -> U14_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) -> U15_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))) -> U16_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) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> =_IN_AG(Y1, U) U9_GG(X, Y, =_out_ag(Y1, U)) -> U10_GG(X, Y, loop_in_gg(X, Y1)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U11_GG(X, Y, =_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> =_IN_GG(X1, X2) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U12_GG(X, Y, isLess_in_gg(X1, X2)) U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> ISLESS_IN_GG(X1, X2) ISLESS_IN_GG(pred(X), pred(Y)) -> U48_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)) -> U49_GG(X, Y, isLess_in_gg(X, Y)) ISLESS_IN_GG(succ(X), succ(Y)) -> ISLESS_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) =_IN_AG(x1, x2) = =_IN_AG(x2) U2_GG(x1, x2, x3, x4) = U2_GG(x1, x2, x3, x4) U3_GG(x1, x2, x3) = U3_GG(x1, x2, x3) ISGREATER_IN_GG(x1, x2) = ISGREATER_IN_GG(x1, x2) U46_GG(x1, x2, x3) = U46_GG(x3) U47_GG(x1, x2, x3) = U47_GG(x3) U4_GG(x1, x2, x3) = U4_GG(x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x3) ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) U13_GGA(x1, x2, x3, x4) = U13_GGA(x4) U14_GGA(x1, x2, x3, x4) = U14_GGA(x4) U15_GGA(x1, x2, x3, x4) = U15_GGA(x4) U16_GGA(x1, x2, x3, x4) = U16_GGA(x4) U9_GG(x1, x2, x3) = U9_GG(x1, x3) U10_GG(x1, x2, x3) = U10_GG(x3) U11_GG(x1, x2, x3) = U11_GG(x3) =_IN_GG(x1, x2) = =_IN_GG(x1, x2) U12_GG(x1, x2, x3) = U12_GG(x3) ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) U48_GG(x1, x2, x3) = U48_GG(x3) U49_GG(x1, x2, x3) = U49_GG(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (61) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 4 SCCs with 26 less nodes. ---------------------------------------- (62) Complex Obligation (AND) ---------------------------------------- (63) 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: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg ISLESS_IN_GG(x1, x2) = ISLESS_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (64) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (65) 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 ---------------------------------------- (66) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (67) 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. ---------------------------------------- (68) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *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 ---------------------------------------- (69) YES ---------------------------------------- (70) 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: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg ISPLUS_IN_GGA(x1, x2, x3) = ISPLUS_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (71) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (72) 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 ---------------------------------------- (73) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (74) 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. ---------------------------------------- (75) 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 ---------------------------------------- (76) YES ---------------------------------------- (77) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg ISGREATER_IN_GG(x1, x2) = ISGREATER_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (78) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (79) Obligation: Pi DP problem: The TRS P consists of the following rules: ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (80) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (81) Obligation: Q DP problem: The TRS P consists of the following rules: ISGREATER_IN_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (82) 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_GG(pred(X), pred(Y)) -> ISGREATER_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 *ISGREATER_IN_GG(succ(X), succ(Y)) -> ISGREATER_IN_GG(X, Y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (83) YES ---------------------------------------- (84) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, =_in_ag(X1, X)) =_in_ag(X, X) -> =_out_ag(X, X) U1_gg(X, Y, =_out_ag(X1, X)) -> U2_gg(X, Y, X1, =_in_ag(X2, zero)) U2_gg(X, Y, X1, =_out_ag(X2, zero)) -> U3_gg(X, Y, isGreater_in_gg(X1, X2)) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U3_gg(X, Y, isGreater_out_gg(X1, X2)) -> U4_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U5_gg(X, Y, =_in_ag(X1, X)) U5_gg(X, Y, =_out_ag(X1, X)) -> U6_gg(X, Y, X1, =_in_ag(X2, Y)) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U7_gg(X, Y, isGreater_in_gg(X1, X2)) U7_gg(X, Y, isGreater_out_gg(X1, X2)) -> U8_gg(X, Y, isPlus_in_gga(Y, X, U)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U8_gg(X, Y, isPlus_out_gga(Y, X, U)) -> U9_gg(X, Y, =_in_ag(Y1, U)) U9_gg(X, Y, =_out_ag(Y1, U)) -> U10_gg(X, Y, loop_in_gg(X, Y1)) U10_gg(X, Y, loop_out_gg(X, Y1)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U11_gg(X, Y, =_in_gg(X1, X2)) =_in_gg(X, X) -> =_out_gg(X, X) U11_gg(X, Y, =_out_gg(X1, X2)) -> loop_out_gg(X, Y) U6_gg(X, Y, X1, =_out_ag(X2, Y)) -> U12_gg(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)) -> U48_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)) -> U49_gg(X, Y, isLess_in_gg(X, Y)) U49_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(succ(X), succ(Y)) U48_gg(X, Y, isLess_out_gg(X, Y)) -> isLess_out_gg(pred(X), pred(Y)) U12_gg(X, Y, isLess_out_gg(X1, X2)) -> loop_out_gg(X, Y) U4_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) U2_gg(x1, x2, x3, x4) = U2_gg(x1, x2, x3, x4) zero = zero U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) U4_gg(x1, x2, x3) = U4_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) U6_gg(x1, x2, x3, x4) = U6_gg(x1, x2, x3, x4) U7_gg(x1, x2, x3) = U7_gg(x1, x2, x3) U8_gg(x1, x2, x3) = U8_gg(x1, x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) U9_gg(x1, x2, x3) = U9_gg(x1, x3) U10_gg(x1, x2, x3) = U10_gg(x3) loop_out_gg(x1, x2) = loop_out_gg U11_gg(x1, x2, x3) = U11_gg(x3) =_in_gg(x1, x2) = =_in_gg(x1, x2) =_out_gg(x1, x2) = =_out_gg U12_gg(x1, x2, x3) = U12_gg(x3) isLess_in_gg(x1, x2) = isLess_in_gg(x1, x2) isLess_out_gg(x1, x2) = isLess_out_gg U48_gg(x1, x2, x3) = U48_gg(x3) U49_gg(x1, x2, x3) = U49_gg(x3) test_fun_out_gg(x1, x2) = test_fun_out_gg LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x3) U9_GG(x1, x2, x3) = U9_GG(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (85) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (86) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2, Y)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg(X1, X2)) -> U8_GG(X, Y, isPlus_in_gga(Y, X, U)) U8_GG(X, Y, isPlus_out_gga(Y, X, U)) -> U9_GG(X, Y, =_in_ag(Y1, U)) U9_GG(X, Y, =_out_ag(Y1, U)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X1, X)) U5_GG(X, Y, =_out_ag(X1, X)) -> U6_GG(X, Y, X1, =_in_ag(X2, Y)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg(succ(X), zero) isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg(succ(X), pred(Y)) isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(X, Y, isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg(zero, pred(Y)) isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(X, Y, isGreater_in_gg(X, Y)) 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))) -> U13_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(succ(X), pred(Y), Z) -> U14_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) -> U15_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) isPlus_in_gga(pred(X), pred(Y), pred(pred(Z))) -> U16_gga(X, Y, Z, isPlus_in_gga(X, Y, Z)) =_in_ag(X, X) -> =_out_ag(X, X) U46_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(succ(X), succ(Y)) U47_gg(X, Y, isGreater_out_gg(X, Y)) -> isGreater_out_gg(pred(X), pred(Y)) U13_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), succ(Y), succ(succ(Z))) U14_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(succ(X), pred(Y), Z) U15_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), succ(Y), Z) U16_gga(X, Y, Z, isPlus_out_gga(X, Y, Z)) -> isPlus_out_gga(pred(X), pred(Y), pred(pred(Z))) The argument filtering Pi contains the following mapping: =_in_ag(x1, x2) = =_in_ag(x2) =_out_ag(x1, x2) = =_out_ag(x1) zero = zero isGreater_in_gg(x1, x2) = isGreater_in_gg(x1, x2) succ(x1) = succ(x1) isGreater_out_gg(x1, x2) = isGreater_out_gg pred(x1) = pred(x1) U46_gg(x1, x2, x3) = U46_gg(x3) U47_gg(x1, x2, x3) = U47_gg(x3) isPlus_in_gga(x1, x2, x3) = isPlus_in_gga(x1, x2) isPlus_out_gga(x1, x2, x3) = isPlus_out_gga(x3) U13_gga(x1, x2, x3, x4) = U13_gga(x4) U14_gga(x1, x2, x3, x4) = U14_gga(x4) U15_gga(x1, x2, x3, x4) = U15_gga(x4) U16_gga(x1, x2, x3, x4) = U16_gga(x4) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) U6_GG(x1, x2, x3, x4) = U6_GG(x1, x2, x3, x4) U7_GG(x1, x2, x3) = U7_GG(x1, x2, x3) U8_GG(x1, x2, x3) = U8_GG(x1, x3) U9_GG(x1, x2, x3) = U9_GG(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (87) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (88) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_in_ag(U)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X)) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_in_ag(Y)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X) U46_gg(isGreater_out_gg) -> isGreater_out_gg U47_gg(isGreater_out_gg) -> isGreater_out_gg U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (89) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_in_ag(U)) at position [1] we obtained the following new rules [LPAR04]: (U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)),U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U))) ---------------------------------------- (90) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X)) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_in_ag(Y)) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X) U46_gg(isGreater_out_gg) -> isGreater_out_gg U47_gg(isGreater_out_gg) -> isGreater_out_gg U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (91) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_in_ag(X)) at position [2] we obtained the following new rules [LPAR04]: (LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)),LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X))) ---------------------------------------- (92) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_in_ag(Y)) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X) U46_gg(isGreater_out_gg) -> isGreater_out_gg U47_gg(isGreater_out_gg) -> isGreater_out_gg U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (93) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_in_ag(Y)) at position [3] we obtained the following new rules [LPAR04]: (U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y)),U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y))) ---------------------------------------- (94) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y)) The TRS R consists of the following rules: isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) =_in_ag(X) -> =_out_ag(X) U46_gg(isGreater_out_gg) -> isGreater_out_gg U47_gg(isGreater_out_gg) -> isGreater_out_gg U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (95) 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. ---------------------------------------- (96) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) U47_gg(isGreater_out_gg) -> isGreater_out_gg U46_gg(isGreater_out_gg) -> isGreater_out_gg The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) =_in_ag(x0) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (97) 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) ---------------------------------------- (98) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) U47_gg(isGreater_out_gg) -> isGreater_out_gg U46_gg(isGreater_out_gg) -> isGreater_out_gg The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (99) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U6_GG(X, Y, X1, =_out_ag(X2)) -> U7_GG(X, Y, isGreater_in_gg(X1, X2)) we obtained the following new rules [LPAR04]: (U6_GG(z0, z1, z2, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)),U6_GG(z0, z1, z2, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1))) ---------------------------------------- (100) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y)) U6_GG(z0, z1, z2, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) U47_gg(isGreater_out_gg) -> isGreater_out_gg U46_gg(isGreater_out_gg) -> isGreater_out_gg The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (101) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U5_GG(X, Y, =_out_ag(X1)) -> U6_GG(X, Y, X1, =_out_ag(Y)) we obtained the following new rules [LPAR04]: (U5_GG(z0, z1, =_out_ag(z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1)),U5_GG(z0, z1, =_out_ag(z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1))) ---------------------------------------- (102) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) U6_GG(z0, z1, z2, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) U5_GG(z0, z1, =_out_ag(z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) U47_gg(isGreater_out_gg) -> isGreater_out_gg U46_gg(isGreater_out_gg) -> isGreater_out_gg The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (103) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule U6_GG(z0, z1, z2, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z2, z1)) we obtained the following new rules [LPAR04]: (U6_GG(z0, z1, z0, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z0, z1)),U6_GG(z0, z1, z0, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z0, z1))) ---------------------------------------- (104) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GG(X, Y, isGreater_out_gg) -> U8_GG(X, isPlus_in_gga(Y, X)) U9_GG(X, =_out_ag(Y1)) -> LOOP_IN_GG(X, Y1) U8_GG(X, isPlus_out_gga(U)) -> U9_GG(X, =_out_ag(U)) LOOP_IN_GG(X, Y) -> U5_GG(X, Y, =_out_ag(X)) U5_GG(z0, z1, =_out_ag(z0)) -> U6_GG(z0, z1, z0, =_out_ag(z1)) U6_GG(z0, z1, z0, =_out_ag(z1)) -> U7_GG(z0, z1, isGreater_in_gg(z0, z1)) The TRS R consists of the following rules: isPlus_in_gga(zero, X) -> isPlus_out_gga(X) isPlus_in_gga(succ(X), zero) -> isPlus_out_gga(succ(X)) isPlus_in_gga(succ(X), succ(Y)) -> U13_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(succ(X), pred(Y)) -> U14_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), zero) -> isPlus_out_gga(pred(X)) isPlus_in_gga(pred(X), succ(Y)) -> U15_gga(isPlus_in_gga(X, Y)) isPlus_in_gga(pred(X), pred(Y)) -> U16_gga(isPlus_in_gga(X, Y)) U16_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(pred(pred(Z))) U15_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U14_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(Z) U13_gga(isPlus_out_gga(Z)) -> isPlus_out_gga(succ(succ(Z))) isGreater_in_gg(succ(X), zero) -> isGreater_out_gg isGreater_in_gg(succ(X), pred(Y)) -> isGreater_out_gg isGreater_in_gg(succ(X), succ(Y)) -> U46_gg(isGreater_in_gg(X, Y)) isGreater_in_gg(zero, pred(Y)) -> isGreater_out_gg isGreater_in_gg(pred(X), pred(Y)) -> U47_gg(isGreater_in_gg(X, Y)) U47_gg(isGreater_out_gg) -> isGreater_out_gg U46_gg(isGreater_out_gg) -> isGreater_out_gg The set Q consists of the following terms: isGreater_in_gg(x0, x1) isPlus_in_gga(x0, x1) U46_gg(x0) U47_gg(x0) U13_gga(x0) U14_gga(x0) U15_gga(x0) U16_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (105) UndefinedPredicateHandlerProof (SOUND) Added facts for all undefined predicates [PROLOG]. ---------------------------------------- (106) Obligation: Clauses: test_fun(X, Y) :- ','(>(X, 0), loop(X, Y)). loop(X, Y) :- ','(>(X, Y), ','(is(Y1, +(Y, X)), loop(X, Y1))). loop(X, Y) :- =<(X, Y). >(X0, X1). is(X0, X1). =<(X0, X1). Query: test_fun(g,g) ---------------------------------------- (107) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: test_fun_in_2: (b,b) loop_in_2: (b,b) (b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg(x1, x2) 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag(x2) +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga(x1) U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga(x1) loop_out_ga(x1, x2) = loop_out_ga(x1) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U6_gg(x1, x2, x3) = U6_gg(x1, x2, x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg(x1, x2) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (108) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg(x1, x2) 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag(x2) +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga(x1) U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga(x1) loop_out_ga(x1, x2) = loop_out_ga(x1) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U6_gg(x1, x2, x3) = U6_gg(x1, x2, x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg(x1, x2) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) ---------------------------------------- (109) 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: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, >_in_gg(X, 0)) TEST_FUN_IN_GG(X, Y) -> >_IN_GG(X, 0) U1_GG(X, Y, >_out_gg(X, 0)) -> U2_GG(X, Y, loop_in_gg(X, Y)) U1_GG(X, Y, >_out_gg(X, 0)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U3_GG(X, Y, >_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> >_IN_GG(X, Y) U3_GG(X, Y, >_out_gg(X, Y)) -> U4_GG(X, Y, is_in_ag(Y1, +(Y, X))) U3_GG(X, Y, >_out_gg(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GG(X, Y, loop_in_ga(X, Y1)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> >_IN_GA(X, Y) U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U3_GA(X, Y, >_out_ga(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GA(X, Y, loop_in_ga(X, Y1)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U6_GA(X, Y, =<_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> =<_IN_GA(X, Y) LOOP_IN_GG(X, Y) -> U6_GG(X, Y, =<_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> =<_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg(x1, x2) 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag(x2) +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga(x1) U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga(x1) loop_out_ga(x1, x2) = loop_out_ga(x1) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U6_gg(x1, x2, x3) = U6_gg(x1, x2, x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg(x1, x2) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) >_IN_GG(x1, x2) = >_IN_GG(x1, x2) U2_GG(x1, x2, x3) = U2_GG(x1, x2, x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U3_GG(x1, x2, x3) = U3_GG(x1, x2, x3) U4_GG(x1, x2, x3) = U4_GG(x1, x2, x3) IS_IN_AG(x1, x2) = IS_IN_AG(x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) >_IN_GA(x1, x2) = >_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x1, x3) U6_GA(x1, x2, x3) = U6_GA(x1, x3) =<_IN_GA(x1, x2) = =<_IN_GA(x1) U6_GG(x1, x2, x3) = U6_GG(x1, x2, x3) =<_IN_GG(x1, x2) = =<_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (110) Obligation: Pi DP problem: The TRS P consists of the following rules: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, >_in_gg(X, 0)) TEST_FUN_IN_GG(X, Y) -> >_IN_GG(X, 0) U1_GG(X, Y, >_out_gg(X, 0)) -> U2_GG(X, Y, loop_in_gg(X, Y)) U1_GG(X, Y, >_out_gg(X, 0)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U3_GG(X, Y, >_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> >_IN_GG(X, Y) U3_GG(X, Y, >_out_gg(X, Y)) -> U4_GG(X, Y, is_in_ag(Y1, +(Y, X))) U3_GG(X, Y, >_out_gg(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GG(X, Y, loop_in_ga(X, Y1)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> >_IN_GA(X, Y) U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U3_GA(X, Y, >_out_ga(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GA(X, Y, loop_in_ga(X, Y1)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U6_GA(X, Y, =<_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> =<_IN_GA(X, Y) LOOP_IN_GG(X, Y) -> U6_GG(X, Y, =<_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> =<_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg(x1, x2) 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag(x2) +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga(x1) U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga(x1) loop_out_ga(x1, x2) = loop_out_ga(x1) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U6_gg(x1, x2, x3) = U6_gg(x1, x2, x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg(x1, x2) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) >_IN_GG(x1, x2) = >_IN_GG(x1, x2) U2_GG(x1, x2, x3) = U2_GG(x1, x2, x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U3_GG(x1, x2, x3) = U3_GG(x1, x2, x3) U4_GG(x1, x2, x3) = U4_GG(x1, x2, x3) IS_IN_AG(x1, x2) = IS_IN_AG(x2) U5_GG(x1, x2, x3) = U5_GG(x1, x2, x3) LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) >_IN_GA(x1, x2) = >_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x1, x3) U6_GA(x1, x2, x3) = U6_GA(x1, x3) =<_IN_GA(x1, x2) = =<_IN_GA(x1) U6_GG(x1, x2, x3) = U6_GG(x1, x2, x3) =<_IN_GG(x1, x2) = =<_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (111) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 17 less nodes. ---------------------------------------- (112) Obligation: Pi DP problem: The TRS P consists of the following rules: U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg(x1, x2) 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x1, x2, x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x2, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x2, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag(x2) +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x1, x2, x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga(x1) U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga(x1) loop_out_ga(x1, x2) = loop_out_ga(x1) loop_out_gg(x1, x2) = loop_out_gg(x1, x2) U6_gg(x1, x2, x3) = U6_gg(x1, x2, x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg(x1, x2) test_fun_out_gg(x1, x2) = test_fun_out_gg(x1, x2) LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) U4_GA(x1, x2, x3) = U4_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (113) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (114) Obligation: Pi DP problem: The TRS P consists of the following rules: U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) The TRS R consists of the following rules: is_in_ag(X0, X1) -> is_out_ag(X0, X1) >_in_ga(X0, X1) -> >_out_ga(X0, X1) The argument filtering Pi contains the following mapping: is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag(x2) +(x1, x2) = +(x2) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga(x1) LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) U4_GA(x1, x2, x3) = U4_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (115) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (116) Obligation: Q DP problem: The TRS P consists of the following rules: U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_in_ag(+(X))) U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) The TRS R consists of the following rules: is_in_ag(X1) -> is_out_ag(X1) >_in_ga(X0) -> >_out_ga(X0) The set Q consists of the following terms: is_in_ag(x0) >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (117) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_in_ag(+(X))) at position [1] we obtained the following new rules [LPAR04]: (U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))),U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X)))) ---------------------------------------- (118) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) The TRS R consists of the following rules: is_in_ag(X1) -> is_out_ag(X1) >_in_ga(X0) -> >_out_ga(X0) The set Q consists of the following terms: is_in_ag(x0) >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (119) 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. ---------------------------------------- (120) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) The TRS R consists of the following rules: >_in_ga(X0) -> >_out_ga(X0) The set Q consists of the following terms: is_in_ag(x0) >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (121) 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]. is_in_ag(x0) ---------------------------------------- (122) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) The TRS R consists of the following rules: >_in_ga(X0) -> >_out_ga(X0) The set Q consists of the following terms: >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (123) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) at position [1] we obtained the following new rules [LPAR04]: (LOOP_IN_GA(X) -> U3_GA(X, >_out_ga(X)),LOOP_IN_GA(X) -> U3_GA(X, >_out_ga(X))) ---------------------------------------- (124) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) LOOP_IN_GA(X) -> U3_GA(X, >_out_ga(X)) The TRS R consists of the following rules: >_in_ga(X0) -> >_out_ga(X0) The set Q consists of the following terms: >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (125) 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. ---------------------------------------- (126) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) LOOP_IN_GA(X) -> U3_GA(X, >_out_ga(X)) R is empty. The set Q consists of the following terms: >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (127) 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_ga(x0) ---------------------------------------- (128) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) LOOP_IN_GA(X) -> U3_GA(X, >_out_ga(X)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (129) 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 = LOOP_IN_GA(X) evaluates to t =LOOP_IN_GA(X) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence LOOP_IN_GA(X) -> U3_GA(X, >_out_ga(X)) with rule LOOP_IN_GA(X') -> U3_GA(X', >_out_ga(X')) at position [] and matcher [X' / X] U3_GA(X, >_out_ga(X)) -> U4_GA(X, is_out_ag(+(X))) with rule U3_GA(X', >_out_ga(X')) -> U4_GA(X', is_out_ag(+(X'))) at position [] and matcher [X' / X] U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) with rule U4_GA(X, is_out_ag(+(X))) -> LOOP_IN_GA(X) 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. ---------------------------------------- (130) NO ---------------------------------------- (131) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: test_fun_in_2: (b,b) loop_in_2: (b,b) (b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga loop_out_ga(x1, x2) = loop_out_ga loop_out_gg(x1, x2) = loop_out_gg U6_gg(x1, x2, x3) = U6_gg(x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg test_fun_out_gg(x1, x2) = test_fun_out_gg Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (132) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga loop_out_ga(x1, x2) = loop_out_ga loop_out_gg(x1, x2) = loop_out_gg U6_gg(x1, x2, x3) = U6_gg(x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg test_fun_out_gg(x1, x2) = test_fun_out_gg ---------------------------------------- (133) 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: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, >_in_gg(X, 0)) TEST_FUN_IN_GG(X, Y) -> >_IN_GG(X, 0) U1_GG(X, Y, >_out_gg(X, 0)) -> U2_GG(X, Y, loop_in_gg(X, Y)) U1_GG(X, Y, >_out_gg(X, 0)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U3_GG(X, Y, >_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> >_IN_GG(X, Y) U3_GG(X, Y, >_out_gg(X, Y)) -> U4_GG(X, Y, is_in_ag(Y1, +(Y, X))) U3_GG(X, Y, >_out_gg(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GG(X, Y, loop_in_ga(X, Y1)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> >_IN_GA(X, Y) U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U3_GA(X, Y, >_out_ga(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GA(X, Y, loop_in_ga(X, Y1)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U6_GA(X, Y, =<_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> =<_IN_GA(X, Y) LOOP_IN_GG(X, Y) -> U6_GG(X, Y, =<_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> =<_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga loop_out_ga(x1, x2) = loop_out_ga loop_out_gg(x1, x2) = loop_out_gg U6_gg(x1, x2, x3) = U6_gg(x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg test_fun_out_gg(x1, x2) = test_fun_out_gg TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) >_IN_GG(x1, x2) = >_IN_GG(x1, x2) U2_GG(x1, x2, x3) = U2_GG(x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U3_GG(x1, x2, x3) = U3_GG(x1, x3) U4_GG(x1, x2, x3) = U4_GG(x1, x3) IS_IN_AG(x1, x2) = IS_IN_AG(x2) U5_GG(x1, x2, x3) = U5_GG(x3) LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) >_IN_GA(x1, x2) = >_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x3) U6_GA(x1, x2, x3) = U6_GA(x3) =<_IN_GA(x1, x2) = =<_IN_GA(x1) U6_GG(x1, x2, x3) = U6_GG(x3) =<_IN_GG(x1, x2) = =<_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (134) Obligation: Pi DP problem: The TRS P consists of the following rules: TEST_FUN_IN_GG(X, Y) -> U1_GG(X, Y, >_in_gg(X, 0)) TEST_FUN_IN_GG(X, Y) -> >_IN_GG(X, 0) U1_GG(X, Y, >_out_gg(X, 0)) -> U2_GG(X, Y, loop_in_gg(X, Y)) U1_GG(X, Y, >_out_gg(X, 0)) -> LOOP_IN_GG(X, Y) LOOP_IN_GG(X, Y) -> U3_GG(X, Y, >_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> >_IN_GG(X, Y) U3_GG(X, Y, >_out_gg(X, Y)) -> U4_GG(X, Y, is_in_ag(Y1, +(Y, X))) U3_GG(X, Y, >_out_gg(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GG(X, Y, loop_in_ga(X, Y1)) U4_GG(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> >_IN_GA(X, Y) U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U3_GA(X, Y, >_out_ga(X, Y)) -> IS_IN_AG(Y1, +(Y, X)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_GA(X, Y, loop_in_ga(X, Y1)) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U6_GA(X, Y, =<_in_ga(X, Y)) LOOP_IN_GA(X, Y) -> =<_IN_GA(X, Y) LOOP_IN_GG(X, Y) -> U6_GG(X, Y, =<_in_gg(X, Y)) LOOP_IN_GG(X, Y) -> =<_IN_GG(X, Y) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga loop_out_ga(x1, x2) = loop_out_ga loop_out_gg(x1, x2) = loop_out_gg U6_gg(x1, x2, x3) = U6_gg(x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg test_fun_out_gg(x1, x2) = test_fun_out_gg TEST_FUN_IN_GG(x1, x2) = TEST_FUN_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) >_IN_GG(x1, x2) = >_IN_GG(x1, x2) U2_GG(x1, x2, x3) = U2_GG(x3) LOOP_IN_GG(x1, x2) = LOOP_IN_GG(x1, x2) U3_GG(x1, x2, x3) = U3_GG(x1, x3) U4_GG(x1, x2, x3) = U4_GG(x1, x3) IS_IN_AG(x1, x2) = IS_IN_AG(x2) U5_GG(x1, x2, x3) = U5_GG(x3) LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) >_IN_GA(x1, x2) = >_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x3) U6_GA(x1, x2, x3) = U6_GA(x3) =<_IN_GA(x1, x2) = =<_IN_GA(x1) U6_GG(x1, x2, x3) = U6_GG(x3) =<_IN_GG(x1, x2) = =<_IN_GG(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (135) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 17 less nodes. ---------------------------------------- (136) Obligation: Pi DP problem: The TRS P consists of the following rules: U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) The TRS R consists of the following rules: test_fun_in_gg(X, Y) -> U1_gg(X, Y, >_in_gg(X, 0)) >_in_gg(X0, X1) -> >_out_gg(X0, X1) U1_gg(X, Y, >_out_gg(X, 0)) -> U2_gg(X, Y, loop_in_gg(X, Y)) loop_in_gg(X, Y) -> U3_gg(X, Y, >_in_gg(X, Y)) U3_gg(X, Y, >_out_gg(X, Y)) -> U4_gg(X, Y, is_in_ag(Y1, +(Y, X))) is_in_ag(X0, X1) -> is_out_ag(X0, X1) U4_gg(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_gg(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U3_ga(X, Y, >_in_ga(X, Y)) >_in_ga(X0, X1) -> >_out_ga(X0, X1) U3_ga(X, Y, >_out_ga(X, Y)) -> U4_ga(X, Y, is_in_ag(Y1, +(Y, X))) U4_ga(X, Y, is_out_ag(Y1, +(Y, X))) -> U5_ga(X, Y, loop_in_ga(X, Y1)) loop_in_ga(X, Y) -> U6_ga(X, Y, =<_in_ga(X, Y)) =<_in_ga(X0, X1) -> =<_out_ga(X0, X1) U6_ga(X, Y, =<_out_ga(X, Y)) -> loop_out_ga(X, Y) U5_ga(X, Y, loop_out_ga(X, Y1)) -> loop_out_ga(X, Y) U5_gg(X, Y, loop_out_ga(X, Y1)) -> loop_out_gg(X, Y) loop_in_gg(X, Y) -> U6_gg(X, Y, =<_in_gg(X, Y)) =<_in_gg(X0, X1) -> =<_out_gg(X0, X1) U6_gg(X, Y, =<_out_gg(X, Y)) -> loop_out_gg(X, Y) U2_gg(X, Y, loop_out_gg(X, Y)) -> test_fun_out_gg(X, Y) The argument filtering Pi contains the following mapping: test_fun_in_gg(x1, x2) = test_fun_in_gg(x1, x2) U1_gg(x1, x2, x3) = U1_gg(x1, x2, x3) >_in_gg(x1, x2) = >_in_gg(x1, x2) >_out_gg(x1, x2) = >_out_gg 0 = 0 U2_gg(x1, x2, x3) = U2_gg(x3) loop_in_gg(x1, x2) = loop_in_gg(x1, x2) U3_gg(x1, x2, x3) = U3_gg(x1, x3) U4_gg(x1, x2, x3) = U4_gg(x1, x3) is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag +(x1, x2) = +(x2) U5_gg(x1, x2, x3) = U5_gg(x3) loop_in_ga(x1, x2) = loop_in_ga(x1) U3_ga(x1, x2, x3) = U3_ga(x1, x3) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga U4_ga(x1, x2, x3) = U4_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) =<_in_ga(x1, x2) = =<_in_ga(x1) =<_out_ga(x1, x2) = =<_out_ga loop_out_ga(x1, x2) = loop_out_ga loop_out_gg(x1, x2) = loop_out_gg U6_gg(x1, x2, x3) = U6_gg(x3) =<_in_gg(x1, x2) = =<_in_gg(x1, x2) =<_out_gg(x1, x2) = =<_out_gg test_fun_out_gg(x1, x2) = test_fun_out_gg LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) U4_GA(x1, x2, x3) = U4_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (137) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (138) Obligation: Pi DP problem: The TRS P consists of the following rules: U3_GA(X, Y, >_out_ga(X, Y)) -> U4_GA(X, Y, is_in_ag(Y1, +(Y, X))) U4_GA(X, Y, is_out_ag(Y1, +(Y, X))) -> LOOP_IN_GA(X, Y1) LOOP_IN_GA(X, Y) -> U3_GA(X, Y, >_in_ga(X, Y)) The TRS R consists of the following rules: is_in_ag(X0, X1) -> is_out_ag(X0, X1) >_in_ga(X0, X1) -> >_out_ga(X0, X1) The argument filtering Pi contains the following mapping: is_in_ag(x1, x2) = is_in_ag(x2) is_out_ag(x1, x2) = is_out_ag +(x1, x2) = +(x2) >_in_ga(x1, x2) = >_in_ga(x1) >_out_ga(x1, x2) = >_out_ga LOOP_IN_GA(x1, x2) = LOOP_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) U4_GA(x1, x2, x3) = U4_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (139) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (140) Obligation: Q DP problem: The TRS P consists of the following rules: U3_GA(X, >_out_ga) -> U4_GA(X, is_in_ag(+(X))) U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) The TRS R consists of the following rules: is_in_ag(X1) -> is_out_ag >_in_ga(X0) -> >_out_ga The set Q consists of the following terms: is_in_ag(x0) >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (141) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule U3_GA(X, >_out_ga) -> U4_GA(X, is_in_ag(+(X))) at position [1] we obtained the following new rules [LPAR04]: (U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag),U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag)) ---------------------------------------- (142) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag) The TRS R consists of the following rules: is_in_ag(X1) -> is_out_ag >_in_ga(X0) -> >_out_ga The set Q consists of the following terms: is_in_ag(x0) >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (143) 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. ---------------------------------------- (144) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag) The TRS R consists of the following rules: >_in_ga(X0) -> >_out_ga The set Q consists of the following terms: is_in_ag(x0) >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (145) 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]. is_in_ag(x0) ---------------------------------------- (146) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag) The TRS R consists of the following rules: >_in_ga(X0) -> >_out_ga The set Q consists of the following terms: >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (147) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule LOOP_IN_GA(X) -> U3_GA(X, >_in_ga(X)) at position [1] we obtained the following new rules [LPAR04]: (LOOP_IN_GA(X) -> U3_GA(X, >_out_ga),LOOP_IN_GA(X) -> U3_GA(X, >_out_ga)) ---------------------------------------- (148) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag) LOOP_IN_GA(X) -> U3_GA(X, >_out_ga) The TRS R consists of the following rules: >_in_ga(X0) -> >_out_ga The set Q consists of the following terms: >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (149) 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. ---------------------------------------- (150) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag) LOOP_IN_GA(X) -> U3_GA(X, >_out_ga) R is empty. The set Q consists of the following terms: >_in_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (151) 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_ga(x0) ---------------------------------------- (152) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, is_out_ag) -> LOOP_IN_GA(X) U3_GA(X, >_out_ga) -> U4_GA(X, is_out_ag) LOOP_IN_GA(X) -> U3_GA(X, >_out_ga) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (153) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 2, "program": { "directives": [], "clauses": [ [ "(test_fun X Y)", "(',' (> X (0)) (loop X Y))" ], [ "(loop X Y)", "(',' (> X Y) (',' (is Y1 (+ Y X)) (loop X Y1)))" ], [ "(loop X Y)", "(=< X Y)" ] ] }, "graph": { "nodes": { "type": "Nodes", "1646": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": ">=" }] }, "ground": [ "T5", "T6" ], "free": [], "exprvars": ["T5"] } }, "1833": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T25", "type": "PlainIntegerVariable" }, "operation": "<=" } ] }, "ground": [ "T25", "T24" ], "free": [], "exprvars": [ "T25", "T5", "T24" ] } }, "1810": { "goal": [{ "clause": -1, "scope": -1, "term": "(loop T15 T17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "name": "T17", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "arguments": [ { "name": "T16", "type": "PlainIntegerVariable" }, { "name": "T15", "type": "PlainIntegerVariable" } ], "type": "PlainIntegerOperation", "operation": "+" }, "operation": "=" }, { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T15", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T16", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T15", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T17", "T16", "T15" ], "free": ["X17"], "exprvars": [ "T5", "T17", "T16", "T15" ] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(test_fun T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T1", "T2" ], "free": [], "exprvars": [] } }, "1644": { "goal": [{ "clause": -1, "scope": -1, "term": "(loop T5 T6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T5", "T6" ], "free": [], "exprvars": ["T5"] } }, "4": { "goal": [{ "clause": 0, "scope": 1, "term": "(test_fun T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T1", "T2" ], "free": [], "exprvars": [] } }, "1762": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1761": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (> T15 T16) (',' (is X17 (+ T16 T15)) (loop T15 X17)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T15", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T15", "T16" ], "free": ["X17"], "exprvars": [ "T5", "T15" ] } }, "1808": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T15", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T16", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T15", "type": "PlainIntegerVariable" }, "operation": ">=" } ] }, "ground": [ "T16", "T15" ], "free": ["X17"], "exprvars": [ "T5", "T16", "T15" ] } }, "9": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (> T5 (0)) (loop T5 T6))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T5", "T6" ], "free": [], "exprvars": [] } }, "1807": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (is X17 (+ T16 T15)) (loop T15 X17))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T15", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T16", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T15", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T16", "T15" ], "free": ["X17"], "exprvars": [ "T5", "T16", "T15" ] } }, "1716": { "goal": [{ "clause": 2, "scope": 2, "term": "(loop T5 T6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T5", "T6" ], "free": [], "exprvars": ["T5"] } }, "1715": { "goal": [{ "clause": 1, "scope": 2, "term": "(loop T5 T6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T5", "T6" ], "free": [], "exprvars": ["T5"] } }, "1814": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1813": { "goal": [{ "clause": -1, "scope": -1, "term": "(=< T24 T25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T24", "T25" ], "free": [], "exprvars": [ "T5", "T24" ] } }, "1835": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T25", "type": "PlainIntegerVariable" }, "operation": "<=" } ] }, "ground": [], "free": [], "exprvars": [ "T25", "T5", "T24" ] } }, "10": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1647": { "goal": [ { "clause": 1, "scope": 2, "term": "(loop T5 T6)" }, { "clause": 2, "scope": 2, "term": "(loop T5 T6)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T5", "T6" ], "free": [], "exprvars": ["T5"] } }, "1834": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T5", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T24", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T25", "type": "PlainIntegerVariable" }, "operation": ">" } ] }, "ground": [ "T25", "T24" ], "free": [], "exprvars": [ "T25", "T5", "T24" ] } } }, "edges": [ { "from": 2, "to": 4, "label": "CASE" }, { "from": 4, "to": 9, "label": "ONLY EVAL with clause\ntest_fun(X3, X4) :- ','(>(X3, 0), loop(X3, X4)).\nand substitutionT1 -> T5,\nX3 -> T5,\nT2 -> T6,\nX4 -> T6" }, { "from": 9, "to": 10, "label": "IS ERROR" }, { "from": 9, "to": 1644, "label": "ARITHCOMP SUCCESS" }, { "from": 9, "to": 1646, "label": "ARITHCOMP FAIL" }, { "from": 1644, "to": 1647, "label": "CASE" }, { "from": 1647, "to": 1715, "label": "PARALLEL" }, { "from": 1647, "to": 1716, "label": "PARALLEL" }, { "from": 1715, "to": 1761, "label": "ONLY EVAL with clause\nloop(X15, X16) :- ','(>(X15, X16), ','(is(X17, +(X16, X15)), loop(X15, X17))).\nand substitutionT5 -> T15,\nX15 -> T15,\nT6 -> T16,\nX16 -> T16" }, { "from": 1716, "to": 1813, "label": "ONLY EVAL with clause\nloop(X25, X26) :- =<(X25, X26).\nand substitutionT5 -> T24,\nX25 -> T24,\nT6 -> T25,\nX26 -> T25" }, { "from": 1761, "to": 1762, "label": "IS ERROR" }, { "from": 1761, "to": 1807, "label": "ARITHCOMP SUCCESS" }, { "from": 1761, "to": 1808, "label": "ARITHCOMP FAIL" }, { "from": 1807, "to": 1810, "label": "\nX17 -> T17" }, { "from": 1810, "to": 1644, "label": "INSTANCE with matching:\nT5 -> T15\nT6 -> T17" }, { "from": 1813, "to": 1814, "label": "IS ERROR" }, { "from": 1813, "to": 1833, "label": "ARITHCOMP SUCCESS" }, { "from": 1813, "to": 1834, "label": "ARITHCOMP FAIL" }, { "from": 1833, "to": 1835, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (154) Obligation: Triples: loopA(X1, X2) :- loopA(X1, X3). test_funB(X1, X2) :- loopA(X1, X2). Clauses: loopcA(X1, X2) :- loopcA(X1, X3). loopcA(X1, X2). Afs: test_funB(x1, x2) = test_funB(x1, x2) ---------------------------------------- (155) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: test_funB_in_2: (b,b) loopA_in_2: (b,b) (b,f) Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: TEST_FUNB_IN_GG(X1, X2) -> U2_GG(X1, X2, loopA_in_gg(X1, X2)) TEST_FUNB_IN_GG(X1, X2) -> LOOPA_IN_GG(X1, X2) LOOPA_IN_GG(X1, X2) -> U1_GG(X1, X2, loopA_in_ga(X1, X3)) LOOPA_IN_GG(X1, X2) -> LOOPA_IN_GA(X1, X3) LOOPA_IN_GA(X1, X2) -> U1_GA(X1, X2, loopA_in_ga(X1, X3)) LOOPA_IN_GA(X1, X2) -> LOOPA_IN_GA(X1, X3) R is empty. The argument filtering Pi contains the following mapping: loopA_in_gg(x1, x2) = loopA_in_gg(x1, x2) loopA_in_ga(x1, x2) = loopA_in_ga(x1) TEST_FUNB_IN_GG(x1, x2) = TEST_FUNB_IN_GG(x1, x2) U2_GG(x1, x2, x3) = U2_GG(x1, x2, x3) LOOPA_IN_GG(x1, x2) = LOOPA_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) LOOPA_IN_GA(x1, x2) = LOOPA_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x1, x3) We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (156) Obligation: Pi DP problem: The TRS P consists of the following rules: TEST_FUNB_IN_GG(X1, X2) -> U2_GG(X1, X2, loopA_in_gg(X1, X2)) TEST_FUNB_IN_GG(X1, X2) -> LOOPA_IN_GG(X1, X2) LOOPA_IN_GG(X1, X2) -> U1_GG(X1, X2, loopA_in_ga(X1, X3)) LOOPA_IN_GG(X1, X2) -> LOOPA_IN_GA(X1, X3) LOOPA_IN_GA(X1, X2) -> U1_GA(X1, X2, loopA_in_ga(X1, X3)) LOOPA_IN_GA(X1, X2) -> LOOPA_IN_GA(X1, X3) R is empty. The argument filtering Pi contains the following mapping: loopA_in_gg(x1, x2) = loopA_in_gg(x1, x2) loopA_in_ga(x1, x2) = loopA_in_ga(x1) TEST_FUNB_IN_GG(x1, x2) = TEST_FUNB_IN_GG(x1, x2) U2_GG(x1, x2, x3) = U2_GG(x1, x2, x3) LOOPA_IN_GG(x1, x2) = LOOPA_IN_GG(x1, x2) U1_GG(x1, x2, x3) = U1_GG(x1, x2, x3) LOOPA_IN_GA(x1, x2) = LOOPA_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (157) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 5 less nodes. ---------------------------------------- (158) Obligation: Pi DP problem: The TRS P consists of the following rules: LOOPA_IN_GA(X1, X2) -> LOOPA_IN_GA(X1, X3) R is empty. The argument filtering Pi contains the following mapping: LOOPA_IN_GA(x1, x2) = LOOPA_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (159) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (160) Obligation: Q DP problem: The TRS P consists of the following rules: LOOPA_IN_GA(X1) -> LOOPA_IN_GA(X1) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (161) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = LOOPA_IN_GA(X1) evaluates to t =LOOPA_IN_GA(X1) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from LOOPA_IN_GA(X1) to LOOPA_IN_GA(X1). ---------------------------------------- (162) NO ---------------------------------------- (163) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 5, "program": { "directives": [], "clauses": [ [ "(test_fun X Y)", "(',' (> X (0)) (loop X Y))" ], [ "(loop X Y)", "(',' (> X Y) (',' (is Y1 (+ Y X)) (loop X Y1)))" ], [ "(loop X Y)", "(=< X Y)" ] ] }, "graph": { "nodes": { "11": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (> T7 (0)) (loop T7 T8))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8" ], "free": [], "exprvars": [] } }, "12": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1809": { "goal": [{ "clause": -1, "scope": -1, "term": "(loop T19 T21)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "name": "T21", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "arguments": [ { "name": "T20", "type": "PlainIntegerVariable" }, { "name": "T19", "type": "PlainIntegerVariable" } ], "type": "PlainIntegerOperation", "operation": "+" }, "operation": "=" }, { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T19", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T20", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T19", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T20", "T19", "T21" ], "free": ["X22"], "exprvars": [ "T20", "T19", "T7", "T21" ] } }, "1693": { "goal": [ { "clause": 1, "scope": 2, "term": "(loop T7 T8)" }, { "clause": 2, "scope": 2, "term": "(loop T7 T8)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T7", "T8" ], "free": [], "exprvars": ["T7"] } }, "type": "Nodes", "1645": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": ">=" }] }, "ground": [ "T7", "T8" ], "free": [], "exprvars": ["T7"] } }, "1643": { "goal": [{ "clause": -1, "scope": -1, "term": "(loop T7 T8)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T7", "T8" ], "free": [], "exprvars": ["T7"] } }, "1764": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1830": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T29", "type": "PlainIntegerVariable" }, "operation": "<=" } ] }, "ground": [], "free": [], "exprvars": [ "T29", "T7", "T28" ] } }, "1763": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (> T19 T20) (',' (is X22 (+ T20 T19)) (loop T19 X22)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T19", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T19", "T20" ], "free": ["X22"], "exprvars": [ "T19", "T7" ] } }, "5": { "goal": [{ "clause": -1, "scope": -1, "term": "(test_fun T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T1", "T2" ], "free": [], "exprvars": [] } }, "6": { "goal": [{ "clause": 0, "scope": 1, "term": "(test_fun T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T1", "T2" ], "free": [], "exprvars": [] } }, "1829": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T29", "type": "PlainIntegerVariable" }, "operation": ">" } ] }, "ground": [ "T29", "T28" ], "free": [], "exprvars": [ "T29", "T7", "T28" ] } }, "1718": { "goal": [{ "clause": 2, "scope": 2, "term": "(loop T7 T8)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T7", "T8" ], "free": [], "exprvars": ["T7"] } }, "1806": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T19", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T20", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T19", "type": "PlainIntegerVariable" }, "operation": ">=" } ] }, "ground": [ "T20", "T19" ], "free": ["X22"], "exprvars": [ "T20", "T19", "T7" ] } }, "1828": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T29", "type": "PlainIntegerVariable" }, "operation": "<=" } ] }, "ground": [ "T29", "T28" ], "free": [], "exprvars": [ "T29", "T7", "T28" ] } }, "1717": { "goal": [{ "clause": 1, "scope": 2, "term": "(loop T7 T8)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [{ "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }] }, "ground": [ "T7", "T8" ], "free": [], "exprvars": ["T7"] } }, "1805": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (is X22 (+ T20 T19)) (loop T19 X22))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T19", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T20", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T19", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T20", "T19" ], "free": ["X22"], "exprvars": [ "T20", "T19", "T7" ] } }, "1816": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1815": { "goal": [{ "clause": -1, "scope": -1, "term": "(=< T28 T29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [ { "lhs": { "type": "PlainIntegerConstant", "value": "0" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" }, { "lhs": { "name": "T28", "type": "PlainIntegerVariable" }, "type": "PlainIntegerRelation", "rhs": { "name": "T7", "type": "PlainIntegerVariable" }, "operation": "<" } ] }, "ground": [ "T28", "T29" ], "free": [], "exprvars": [ "T7", "T28" ] } } }, "edges": [ { "from": 5, "to": 6, "label": "CASE" }, { "from": 6, "to": 11, "label": "ONLY EVAL with clause\ntest_fun(X5, X6) :- ','(>(X5, 0), loop(X5, X6)).\nand substitutionT1 -> T7,\nX5 -> T7,\nT2 -> T8,\nX6 -> T8" }, { "from": 11, "to": 12, "label": "IS ERROR" }, { "from": 11, "to": 1643, "label": "ARITHCOMP SUCCESS" }, { "from": 11, "to": 1645, "label": "ARITHCOMP FAIL" }, { "from": 1643, "to": 1693, "label": "CASE" }, { "from": 1693, "to": 1717, "label": "PARALLEL" }, { "from": 1693, "to": 1718, "label": "PARALLEL" }, { "from": 1717, "to": 1763, "label": "ONLY EVAL with clause\nloop(X20, X21) :- ','(>(X20, X21), ','(is(X22, +(X21, X20)), loop(X20, X22))).\nand substitutionT7 -> T19,\nX20 -> T19,\nT8 -> T20,\nX21 -> T20" }, { "from": 1718, "to": 1815, "label": "ONLY EVAL with clause\nloop(X30, X31) :- =<(X30, X31).\nand substitutionT7 -> T28,\nX30 -> T28,\nT8 -> T29,\nX31 -> T29" }, { "from": 1763, "to": 1764, "label": "IS ERROR" }, { "from": 1763, "to": 1805, "label": "ARITHCOMP SUCCESS" }, { "from": 1763, "to": 1806, "label": "ARITHCOMP FAIL" }, { "from": 1805, "to": 1809, "label": "\nX22 -> T21" }, { "from": 1809, "to": 1643, "label": "INSTANCE with matching:\nT7 -> T19\nT8 -> T21" }, { "from": 1815, "to": 1816, "label": "IS ERROR" }, { "from": 1815, "to": 1828, "label": "ARITHCOMP SUCCESS" }, { "from": 1815, "to": 1829, "label": "ARITHCOMP FAIL" }, { "from": 1828, "to": 1830, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (164) Obligation: Rules: f1718_out(T7, T8) -> f1693_out(T7, T8) :|: TRUE f1693_in(x, x1) -> f1717_in(x, x1) :|: TRUE f1717_out(x2, x3) -> f1693_out(x2, x3) :|: TRUE f1693_in(x4, x5) -> f1718_in(x4, x5) :|: TRUE f1763_out(T19, T20) -> f1717_out(T19, T20) :|: TRUE f1717_in(x6, x7) -> f1763_in(x6, x7) :|: TRUE f1805_in(x8, x9) -> f1809_in(x9, x10, x8) :|: x10 = x8 + x9 f1809_out(x11, x12, x13) -> f1805_out(x13, x11) :|: TRUE f1643_out(x14, x15) -> f1809_out(x14, x15, x16) :|: TRUE f1809_in(x17, x18, x19) -> f1643_in(x17, x18) :|: TRUE f1763_in(x20, x21) -> f1806_in(x21, x20) :|: x20 <= x21 f1806_out(x22, x23) -> f1763_out(x23, x22) :|: x23 <= x22 f1763_in(x24, x25) -> f1764_in :|: TRUE f1764_out -> f1763_out(x26, x27) :|: TRUE f1805_out(x28, x29) -> f1763_out(x29, x28) :|: x29 > x28 f1763_in(x30, x31) -> f1805_in(x31, x30) :|: x30 > x31 f1643_in(x32, x33) -> f1693_in(x32, x33) :|: TRUE f1693_out(x34, x35) -> f1643_out(x34, x35) :|: TRUE f5_in(T1, T2) -> f6_in(T1, T2) :|: TRUE f6_out(x36, x37) -> f5_out(x36, x37) :|: TRUE f11_out(x38, x39) -> f6_out(x38, x39) :|: TRUE f6_in(x40, x41) -> f11_in(x40, x41) :|: TRUE f12_out -> f11_out(x42, x43) :|: TRUE f1643_out(x44, x45) -> f11_out(x44, x45) :|: x44 > 0 f11_in(x46, x47) -> f12_in :|: TRUE f11_in(x48, x49) -> f1645_in(x48, x49) :|: x48 <= 0 f1645_out(x50, x51) -> f11_out(x50, x51) :|: x50 <= 0 f11_in(x52, x53) -> f1643_in(x52, x53) :|: x52 > 0 Start term: f5_in(T1, T2) ---------------------------------------- (165) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f1693_in(x, x1) -> f1717_in(x, x1) :|: TRUE f1717_in(x6, x7) -> f1763_in(x6, x7) :|: TRUE f1805_in(x8, x9) -> f1809_in(x9, x10, x8) :|: x10 = x8 + x9 f1809_in(x17, x18, x19) -> f1643_in(x17, x18) :|: TRUE f1763_in(x30, x31) -> f1805_in(x31, x30) :|: x30 > x31 f1643_in(x32, x33) -> f1693_in(x32, x33) :|: TRUE ---------------------------------------- (166) Obligation: Rules: f1693_in(x, x1) -> f1717_in(x, x1) :|: TRUE f1717_in(x6, x7) -> f1763_in(x6, x7) :|: TRUE f1805_in(x8, x9) -> f1809_in(x9, x10, x8) :|: x10 = x8 + x9 f1809_in(x17, x18, x19) -> f1643_in(x17, x18) :|: TRUE f1763_in(x30, x31) -> f1805_in(x31, x30) :|: x30 > x31 f1643_in(x32, x33) -> f1693_in(x32, x33) :|: TRUE ---------------------------------------- (167) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (168) Obligation: Rules: f1693_in(x:0, x1:0) -> f1693_in(x:0, x1:0 + x:0) :|: x:0 > x1:0 ---------------------------------------- (169) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (170) Obligation: Rules: f1693_in(x:0, x1:0) -> f1693_in(x:0, arith) :|: x:0 > x1:0 && arith = x1:0 + x:0 ---------------------------------------- (171) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1693_in(x:0, x1:0) -> f1693_in(x:0, arith) :|: x:0 > x1:0 && arith = x1:0 + x:0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (172) Obligation: Termination digraph: Nodes: (1) f1693_in(x:0, x1:0) -> f1693_in(x:0, arith) :|: x:0 > x1:0 && arith = x1:0 + x:0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (173) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (174) Obligation: Rules: f1693_in(x:0:0, x1:0:0) -> f1693_in(x:0:0, x1:0:0 + x:0:0) :|: x:0:0 > x1:0:0 ---------------------------------------- (175) IRSwTToIntTRSProof (SOUND) Applied path-length measure to transform intTRS with terms to intTRS. ---------------------------------------- (176) Obligation: Rules: f1693_in(x, x1) -> f1693_in(x, x1 + x) :|: x1 < x ---------------------------------------- (177) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (178) Obligation: Rules: f1693_in(x:0, x1:0) -> f1693_in(x:0, x1:0 + x:0) :|: x:0 > x1:0 ---------------------------------------- (179) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc, x:0, x1:0) -> f(1, x:0, x1:0 + x:0) :|: pc = 1 && x:0 > x1:0 Witness term starting non-terminating reduction: f(1, 0, -4) ---------------------------------------- (180) NO