MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.pl # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Left Termination of the query pattern f(g) w.r.t. the given Prolog program could not be shown: (0) Prolog (1) PrologToPiTRSProof [SOUND, 0 ms] (2) PiTRS (3) DependencyPairsProof [EQUIVALENT, 8 ms] (4) PiDP (5) DependencyGraphProof [EQUIVALENT, 0 ms] (6) AND (7) PiDP (8) UsableRulesProof [EQUIVALENT, 0 ms] (9) PiDP (10) PiDPToQDPProof [SOUND, 0 ms] (11) QDP (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] (13) YES (14) PiDP (15) UsableRulesProof [EQUIVALENT, 0 ms] (16) PiDP (17) PiDPToQDPProof [SOUND, 0 ms] (18) QDP (19) MRRProof [EQUIVALENT, 2 ms] (20) QDP (21) PisEmptyProof [EQUIVALENT, 0 ms] (22) YES (23) PiDP (24) UsableRulesProof [EQUIVALENT, 0 ms] (25) PiDP (26) PiDPToQDPProof [SOUND, 0 ms] (27) QDP (28) MRRProof [EQUIVALENT, 9 ms] (29) QDP (30) RFCMatchBoundsDPProof [EQUIVALENT, 0 ms] (31) YES (32) PiDP (33) UsableRulesProof [EQUIVALENT, 0 ms] (34) PiDP (35) PiDPToQDPProof [SOUND, 0 ms] (36) QDP (37) TransformationProof [SOUND, 0 ms] (38) QDP (39) TransformationProof [SOUND, 0 ms] (40) QDP (41) TransformationProof [EQUIVALENT, 0 ms] (42) QDP (43) TransformationProof [EQUIVALENT, 0 ms] (44) QDP (45) DependencyGraphProof [EQUIVALENT, 0 ms] (46) QDP (47) PrologToPiTRSProof [SOUND, 0 ms] (48) PiTRS (49) DependencyPairsProof [EQUIVALENT, 0 ms] (50) PiDP (51) DependencyGraphProof [EQUIVALENT, 0 ms] (52) AND (53) PiDP (54) UsableRulesProof [EQUIVALENT, 0 ms] (55) PiDP (56) PiDPToQDPProof [SOUND, 0 ms] (57) QDP (58) QDPSizeChangeProof [EQUIVALENT, 0 ms] (59) YES (60) PiDP (61) UsableRulesProof [EQUIVALENT, 0 ms] (62) PiDP (63) PiDPToQDPProof [SOUND, 0 ms] (64) QDP (65) QDPQMonotonicMRRProof [EQUIVALENT, 22 ms] (66) QDP (67) DependencyGraphProof [EQUIVALENT, 0 ms] (68) TRUE (69) PiDP (70) UsableRulesProof [EQUIVALENT, 0 ms] (71) PiDP (72) PiDPToQDPProof [SOUND, 0 ms] (73) QDP (74) TransformationProof [EQUIVALENT, 0 ms] (75) QDP (76) QDPQMonotonicMRRProof [EQUIVALENT, 11 ms] (77) QDP (78) QDPQMonotonicMRRProof [EQUIVALENT, 7 ms] (79) QDP (80) QDPOrderProof [EQUIVALENT, 0 ms] (81) QDP (82) PisEmptyProof [EQUIVALENT, 0 ms] (83) YES (84) PiDP (85) UsableRulesProof [EQUIVALENT, 0 ms] (86) PiDP (87) PiDPToQDPProof [SOUND, 0 ms] (88) QDP (89) PrologToDTProblemTransformerProof [SOUND, 42 ms] (90) TRIPLES (91) TriplesToPiDPProof [SOUND, 23 ms] (92) PiDP (93) DependencyGraphProof [EQUIVALENT, 0 ms] (94) AND (95) PiDP (96) UsableRulesProof [EQUIVALENT, 0 ms] (97) PiDP (98) PiDPToQDPProof [SOUND, 0 ms] (99) QDP (100) QDPSizeChangeProof [EQUIVALENT, 0 ms] (101) YES (102) PiDP (103) UsableRulesProof [EQUIVALENT, 0 ms] (104) PiDP (105) PiDPToQDPProof [SOUND, 0 ms] (106) QDP (107) QDPQMonotonicMRRProof [EQUIVALENT, 18 ms] (108) QDP (109) QDPOrderProof [EQUIVALENT, 0 ms] (110) QDP (111) PisEmptyProof [EQUIVALENT, 0 ms] (112) YES (113) PiDP (114) UsableRulesProof [EQUIVALENT, 0 ms] (115) PiDP (116) PiDPToQDPProof [SOUND, 0 ms] (117) QDP (118) QDPSizeChangeProof [EQUIVALENT, 0 ms] (119) YES (120) PiDP (121) UsableRulesProof [EQUIVALENT, 0 ms] (122) PiDP (123) PiDPToQDPProof [SOUND, 0 ms] (124) QDP (125) TransformationProof [EQUIVALENT, 1 ms] (126) QDP (127) UsableRulesProof [EQUIVALENT, 0 ms] (128) QDP (129) QReductionProof [EQUIVALENT, 0 ms] (130) QDP (131) QDPQMonotonicMRRProof [EQUIVALENT, 13 ms] (132) QDP (133) DependencyGraphProof [EQUIVALENT, 0 ms] (134) TRUE (135) PiDP (136) UsableRulesProof [EQUIVALENT, 0 ms] (137) PiDP (138) PiDPToQDPProof [SOUND, 0 ms] (139) QDP (140) TransformationProof [EQUIVALENT, 0 ms] (141) QDP (142) QDPQMonotonicMRRProof [EQUIVALENT, 296 ms] (143) QDP (144) PrologToTRSTransformerProof [SOUND, 29 ms] (145) QTRS (146) Overlay + Local Confluence [EQUIVALENT, 0 ms] (147) QTRS (148) DependencyPairsProof [EQUIVALENT, 0 ms] (149) QDP (150) DependencyGraphProof [EQUIVALENT, 0 ms] (151) AND (152) QDP (153) UsableRulesProof [EQUIVALENT, 0 ms] (154) QDP (155) QReductionProof [EQUIVALENT, 0 ms] (156) QDP (157) QDPSizeChangeProof [EQUIVALENT, 0 ms] (158) YES (159) QDP (160) UsableRulesProof [EQUIVALENT, 0 ms] (161) QDP (162) QReductionProof [EQUIVALENT, 0 ms] (163) QDP (164) QDPOrderProof [EQUIVALENT, 17 ms] (165) QDP (166) DependencyGraphProof [EQUIVALENT, 0 ms] (167) TRUE (168) QDP (169) UsableRulesProof [EQUIVALENT, 0 ms] (170) QDP (171) QReductionProof [EQUIVALENT, 0 ms] (172) QDP (173) QDPSizeChangeProof [EQUIVALENT, 0 ms] (174) YES (175) QDP (176) UsableRulesProof [EQUIVALENT, 0 ms] (177) QDP (178) QReductionProof [EQUIVALENT, 0 ms] (179) QDP (180) QDPOrderProof [EQUIVALENT, 139 ms] (181) QDP (182) DependencyGraphProof [EQUIVALENT, 0 ms] (183) TRUE (184) QDP (185) MNOCProof [EQUIVALENT, 1 ms] (186) QDP (187) NonLoopProof [COMPLETE, 16.0 s] (188) NO (189) PrologToIRSwTTransformerProof [SOUND, 60 ms] (190) AND (191) IRSwT (192) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (193) TRUE (194) IRSwT (195) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (196) TRUE (197) IRSwT (198) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (199) IRSwT (200) IntTRSCompressionProof [EQUIVALENT, 15 ms] (201) IRSwT (202) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (203) IRSwT (204) IRSwTTerminationDigraphProof [EQUIVALENT, 2 ms] (205) IRSwT (206) TempFilterProof [SOUND, 2 ms] (207) IRSwT (208) IRSwTToQDPProof [SOUND, 0 ms] (209) QDP (210) QDPSizeChangeProof [EQUIVALENT, 0 ms] (211) YES (212) IRSwT (213) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (214) IRSwT (215) IntTRSCompressionProof [EQUIVALENT, 18 ms] (216) IRSwT (217) IRSFormatTransformerProof [EQUIVALENT, 1 ms] (218) IRSwT (219) IRSwTTerminationDigraphProof [EQUIVALENT, 44 ms] (220) IRSwT (221) IntTRSCompressionProof [EQUIVALENT, 11 ms] (222) IRSwT (223) IRSwTToIntTRSProof [SOUND, 20 ms] (224) IRSwT (225) IntTRSCompressionProof [EQUIVALENT, 10 ms] (226) IRSwT (227) IRSwT ---------------------------------------- (0) Obligation: Clauses: pred(0, 0). pred(s(0), 0). pred(s(s(X)), s(Y)) :- pred(s(X), Y). double(0, 0). double(s(X), s(s(Y))) :- ','(pred(s(X), Z), double(Z, Y)). half(0, 0). half(s(s(X)), s(U)) :- ','(pred(s(s(X)), Y), ','(pred(Y, Z), half(Z, U))). f(s(X)) :- ','(half(s(X), Y), ','(double(Y, Z), f(Z))). Query: f(g) ---------------------------------------- (1) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: f_in_1: (b) half_in_2: (b,f) pred_in_2: (b,f) double_in_2: (b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (2) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g ---------------------------------------- (3) 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: F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) F_IN_G(s(X)) -> HALF_IN_GA(s(X), Y) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) HALF_IN_GA(s(s(X)), s(U)) -> PRED_IN_GA(s(s(X)), Y) PRED_IN_GA(s(s(X)), s(Y)) -> U1_GA(X, Y, pred_in_ga(s(X), Y)) PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> PRED_IN_GA(Y, Z) U5_GA(X, U, pred_out_ga(Y, Z)) -> U6_GA(X, U, half_in_ga(Z, U)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U7_G(X, half_out_ga(s(X), Y)) -> DOUBLE_IN_GA(Y, Z) DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) DOUBLE_IN_GA(s(X), s(s(Y))) -> PRED_IN_GA(s(X), Z) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> U3_GA(X, Y, double_in_ga(Z, Y)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) U8_G(X, double_out_ga(Y, Z)) -> U9_G(X, f_in_g(Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x2) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x3) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x3) U5_GA(x1, x2, x3) = U5_GA(x3) U6_GA(x1, x2, x3) = U6_GA(x3) U8_G(x1, x2) = U8_G(x2) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x3) U3_GA(x1, x2, x3) = U3_GA(x3) U9_G(x1, x2) = U9_G(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (4) Obligation: Pi DP problem: The TRS P consists of the following rules: F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) F_IN_G(s(X)) -> HALF_IN_GA(s(X), Y) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) HALF_IN_GA(s(s(X)), s(U)) -> PRED_IN_GA(s(s(X)), Y) PRED_IN_GA(s(s(X)), s(Y)) -> U1_GA(X, Y, pred_in_ga(s(X), Y)) PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> PRED_IN_GA(Y, Z) U5_GA(X, U, pred_out_ga(Y, Z)) -> U6_GA(X, U, half_in_ga(Z, U)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U7_G(X, half_out_ga(s(X), Y)) -> DOUBLE_IN_GA(Y, Z) DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) DOUBLE_IN_GA(s(X), s(s(Y))) -> PRED_IN_GA(s(X), Z) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> U3_GA(X, Y, double_in_ga(Z, Y)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) U8_G(X, double_out_ga(Y, Z)) -> U9_G(X, f_in_g(Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x2) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x3) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x3) U5_GA(x1, x2, x3) = U5_GA(x3) U6_GA(x1, x2, x3) = U6_GA(x3) U8_G(x1, x2) = U8_G(x2) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x3) U3_GA(x1, x2, x3) = U3_GA(x3) U9_G(x1, x2) = U9_G(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (5) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 4 SCCs with 9 less nodes. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: Pi DP problem: The TRS P consists of the following rules: PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (8) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (9) Obligation: Pi DP problem: The TRS P consists of the following rules: PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (10) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (11) Obligation: Q DP problem: The TRS P consists of the following rules: PRED_IN_GA(s(s(X))) -> PRED_IN_GA(s(X)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (12) 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: *PRED_IN_GA(s(s(X))) -> PRED_IN_GA(s(X)) The graph contains the following edges 1 > 1 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Pi DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (15) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (16) Obligation: Pi DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) The TRS R consists of the following rules: pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The argument filtering Pi contains the following mapping: s(x1) = s(x1) 0 = 0 pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (17) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (18) Obligation: Q DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X)) -> U2_GA(pred_in_ga(s(X))) U2_GA(pred_out_ga(Z)) -> DOUBLE_IN_GA(Z) The TRS R consists of the following rules: pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (19) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented dependency pairs: DOUBLE_IN_GA(s(X)) -> U2_GA(pred_in_ga(s(X))) U2_GA(pred_out_ga(Z)) -> DOUBLE_IN_GA(Z) Strictly oriented rules of the TRS R: pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) Used ordering: Knuth-Bendix order [KBO] with precedence:s_1 > pred_in_ga_1 > DOUBLE_IN_GA_1 > U1_ga_1 > pred_out_ga_1 > 0 > U2_GA_1 and weight map: 0=1 pred_in_ga_1=1 s_1=4 pred_out_ga_1=3 U1_ga_1=4 DOUBLE_IN_GA_1=3 U2_GA_1=1 The variable weight is 1 ---------------------------------------- (20) Obligation: Q DP problem: P is empty. R is empty. The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (21) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (22) YES ---------------------------------------- (23) Obligation: Pi DP problem: The TRS P consists of the following rules: U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x3) U5_GA(x1, x2, x3) = U5_GA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (24) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (25) Obligation: Pi DP problem: The TRS P consists of the following rules: U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) The TRS R consists of the following rules: pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The argument filtering Pi contains the following mapping: s(x1) = s(x1) 0 = 0 pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x3) U5_GA(x1, x2, x3) = U5_GA(x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (26) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(pred_out_ga(Y)) -> U5_GA(pred_in_ga(Y)) U5_GA(pred_out_ga(Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(pred_in_ga(s(s(X)))) The TRS R consists of the following rules: pred_in_ga(0) -> pred_out_ga(0) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (28) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented rules of the TRS R: pred_in_ga(s(0)) -> pred_out_ga(0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(HALF_IN_GA(x_1)) = 2*x_1 POL(U1_ga(x_1)) = 2 + x_1 POL(U4_GA(x_1)) = x_1 POL(U5_GA(x_1)) = x_1 POL(pred_in_ga(x_1)) = 2*x_1 POL(pred_out_ga(x_1)) = 2*x_1 POL(s(x_1)) = 1 + x_1 ---------------------------------------- (29) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(pred_out_ga(Y)) -> U5_GA(pred_in_ga(Y)) U5_GA(pred_out_ga(Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(pred_in_ga(s(s(X)))) The TRS R consists of the following rules: pred_in_ga(0) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (30) RFCMatchBoundsDPProof (EQUIVALENT) Termination of the TRS P cup R can be shown by a matchbound [MATCHBOUNDS1,MATCHBOUNDS2] of 2. This implies finiteness of the given DP problem. The following rules (P cup R) were used to construct the certificate: pred_in_ga(0) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) U4_GA(pred_out_ga(Y)) -> U5_GA(pred_in_ga(Y)) U5_GA(pred_out_ga(Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(pred_in_ga(s(s(X)))) The certificate found is represented by the following graph. The certificate consists of the following enumerated nodes: 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259 Node 1243 is start node and node 1244 is final node. Those nodes are connected through the following edges: * 1243 to 1245 labelled pred_out_ga_1(0)* 1243 to 1246 labelled U1_ga_1(0)* 1243 to 1247 labelled pred_out_ga_1(0)* 1243 to 1248 labelled U5_GA_1(0)* 1243 to 1244 labelled HALF_IN_GA_1(0)* 1243 to 1249 labelled U4_GA_1(0)* 1243 to 1252 labelled U4_GA_1(1)* 1243 to 1255 labelled HALF_IN_GA_1(1)* 1244 to 1244 labelled #_1(0)* 1245 to 1244 labelled 0(0)* 1246 to 1247 labelled pred_in_ga_1(0)* 1246 to 1256 labelled U1_ga_1(1)* 1247 to 1244 labelled s_1(0)* 1248 to 1244 labelled pred_in_ga_1(0)* 1248 to 1255 labelled pred_out_ga_1(1)* 1248 to 1256 labelled U1_ga_1(1)* 1249 to 1250 labelled pred_in_ga_1(0)* 1249 to 1256 labelled U1_ga_1(1)* 1250 to 1251 labelled s_1(0)* 1251 to 1244 labelled s_1(0)* 1252 to 1253 labelled pred_in_ga_1(1)* 1252 to 1258 labelled U1_ga_1(2)* 1253 to 1254 labelled s_1(1)* 1254 to 1244 labelled s_1(1)* 1255 to 1244 labelled 0(1)* 1256 to 1257 labelled pred_in_ga_1(1)* 1256 to 1256 labelled U1_ga_1(1)* 1257 to 1244 labelled s_1(1)* 1258 to 1259 labelled pred_in_ga_1(2)* 1258 to 1256 labelled U1_ga_1(1)* 1259 to 1244 labelled s_1(2) ---------------------------------------- (31) YES ---------------------------------------- (32) Obligation: Pi DP problem: The TRS P consists of the following rules: U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) U8_g(x1, x2) = U8_g(x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) U9_g(x1, x2) = U9_g(x2) f_out_g(x1) = f_out_g F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x2) U8_G(x1, x2) = U8_G(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (33) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (34) Obligation: Pi DP problem: The TRS P consists of the following rules: U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) The TRS R consists of the following rules: double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) half_in_ga(0, 0) -> half_out_ga(0, 0) The argument filtering Pi contains the following mapping: s(x1) = s(x1) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x2) U4_ga(x1, x2, x3) = U4_ga(x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x2) U1_ga(x1, x2, x3) = U1_ga(x3) U5_ga(x1, x2, x3) = U5_ga(x3) U6_ga(x1, x2, x3) = U6_ga(x3) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x2) U2_ga(x1, x2, x3) = U2_ga(x3) U3_ga(x1, x2, x3) = U3_ga(x3) F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x2) U8_G(x1, x2) = U8_G(x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (35) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (36) Obligation: Q DP problem: The TRS P consists of the following rules: U7_G(half_out_ga(Y)) -> U8_G(double_in_ga(Y)) U8_G(double_out_ga(Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(half_in_ga(s(X))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0) double_in_ga(s(X)) -> U2_ga(pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(pred_in_ga(s(s(X)))) U2_ga(pred_out_ga(Z)) -> U3_ga(double_in_ga(Z)) U4_ga(pred_out_ga(Y)) -> U5_ga(pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U3_ga(double_out_ga(Y)) -> double_out_ga(s(s(Y))) U5_ga(pred_out_ga(Z)) -> U6_ga(half_in_ga(Z)) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) pred_in_ga(0) -> pred_out_ga(0) U6_ga(half_out_ga(U)) -> half_out_ga(s(U)) half_in_ga(0) -> half_out_ga(0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0) U4_ga(x0) pred_in_ga(x0) U3_ga(x0) U5_ga(x0) U1_ga(x0) U6_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (37) TransformationProof (SOUND) By narrowing [LPAR04] the rule U7_G(half_out_ga(Y)) -> U8_G(double_in_ga(Y)) at position [0] we obtained the following new rules [LPAR04]: (U7_G(half_out_ga(0)) -> U8_G(double_out_ga(0)),U7_G(half_out_ga(0)) -> U8_G(double_out_ga(0))) (U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0)))),U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0))))) ---------------------------------------- (38) Obligation: Q DP problem: The TRS P consists of the following rules: U8_G(double_out_ga(Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(half_in_ga(s(X))) U7_G(half_out_ga(0)) -> U8_G(double_out_ga(0)) U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0)))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0) double_in_ga(s(X)) -> U2_ga(pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(pred_in_ga(s(s(X)))) U2_ga(pred_out_ga(Z)) -> U3_ga(double_in_ga(Z)) U4_ga(pred_out_ga(Y)) -> U5_ga(pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U3_ga(double_out_ga(Y)) -> double_out_ga(s(s(Y))) U5_ga(pred_out_ga(Z)) -> U6_ga(half_in_ga(Z)) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) pred_in_ga(0) -> pred_out_ga(0) U6_ga(half_out_ga(U)) -> half_out_ga(s(U)) half_in_ga(0) -> half_out_ga(0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0) U4_ga(x0) pred_in_ga(x0) U3_ga(x0) U5_ga(x0) U1_ga(x0) U6_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (39) TransformationProof (SOUND) By narrowing [LPAR04] the rule F_IN_G(s(X)) -> U7_G(half_in_ga(s(X))) at position [0] we obtained the following new rules [LPAR04]: (F_IN_G(s(s(x0))) -> U7_G(U4_ga(pred_in_ga(s(s(x0))))),F_IN_G(s(s(x0))) -> U7_G(U4_ga(pred_in_ga(s(s(x0)))))) ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: U8_G(double_out_ga(Z)) -> F_IN_G(Z) U7_G(half_out_ga(0)) -> U8_G(double_out_ga(0)) U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0)))) F_IN_G(s(s(x0))) -> U7_G(U4_ga(pred_in_ga(s(s(x0))))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0) double_in_ga(s(X)) -> U2_ga(pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(pred_in_ga(s(s(X)))) U2_ga(pred_out_ga(Z)) -> U3_ga(double_in_ga(Z)) U4_ga(pred_out_ga(Y)) -> U5_ga(pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U3_ga(double_out_ga(Y)) -> double_out_ga(s(s(Y))) U5_ga(pred_out_ga(Z)) -> U6_ga(half_in_ga(Z)) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) pred_in_ga(0) -> pred_out_ga(0) U6_ga(half_out_ga(U)) -> half_out_ga(s(U)) half_in_ga(0) -> half_out_ga(0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0) U4_ga(x0) pred_in_ga(x0) U3_ga(x0) U5_ga(x0) U1_ga(x0) U6_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (41) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule F_IN_G(s(s(x0))) -> U7_G(U4_ga(pred_in_ga(s(s(x0))))) at position [0,0] we obtained the following new rules [LPAR04]: (F_IN_G(s(s(x0))) -> U7_G(U4_ga(U1_ga(pred_in_ga(s(x0))))),F_IN_G(s(s(x0))) -> U7_G(U4_ga(U1_ga(pred_in_ga(s(x0)))))) ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: U8_G(double_out_ga(Z)) -> F_IN_G(Z) U7_G(half_out_ga(0)) -> U8_G(double_out_ga(0)) U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0)))) F_IN_G(s(s(x0))) -> U7_G(U4_ga(U1_ga(pred_in_ga(s(x0))))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0) double_in_ga(s(X)) -> U2_ga(pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(pred_in_ga(s(s(X)))) U2_ga(pred_out_ga(Z)) -> U3_ga(double_in_ga(Z)) U4_ga(pred_out_ga(Y)) -> U5_ga(pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U3_ga(double_out_ga(Y)) -> double_out_ga(s(s(Y))) U5_ga(pred_out_ga(Z)) -> U6_ga(half_in_ga(Z)) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) pred_in_ga(0) -> pred_out_ga(0) U6_ga(half_out_ga(U)) -> half_out_ga(s(U)) half_in_ga(0) -> half_out_ga(0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0) U4_ga(x0) pred_in_ga(x0) U3_ga(x0) U5_ga(x0) U1_ga(x0) U6_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (43) TransformationProof (EQUIVALENT) By forward instantiating [JAR06] the rule U8_G(double_out_ga(Z)) -> F_IN_G(Z) we obtained the following new rules [LPAR04]: (U8_G(double_out_ga(s(s(y_0)))) -> F_IN_G(s(s(y_0))),U8_G(double_out_ga(s(s(y_0)))) -> F_IN_G(s(s(y_0)))) ---------------------------------------- (44) Obligation: Q DP problem: The TRS P consists of the following rules: U7_G(half_out_ga(0)) -> U8_G(double_out_ga(0)) U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0)))) F_IN_G(s(s(x0))) -> U7_G(U4_ga(U1_ga(pred_in_ga(s(x0))))) U8_G(double_out_ga(s(s(y_0)))) -> F_IN_G(s(s(y_0))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0) double_in_ga(s(X)) -> U2_ga(pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(pred_in_ga(s(s(X)))) U2_ga(pred_out_ga(Z)) -> U3_ga(double_in_ga(Z)) U4_ga(pred_out_ga(Y)) -> U5_ga(pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U3_ga(double_out_ga(Y)) -> double_out_ga(s(s(Y))) U5_ga(pred_out_ga(Z)) -> U6_ga(half_in_ga(Z)) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) pred_in_ga(0) -> pred_out_ga(0) U6_ga(half_out_ga(U)) -> half_out_ga(s(U)) half_in_ga(0) -> half_out_ga(0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0) U4_ga(x0) pred_in_ga(x0) U3_ga(x0) U5_ga(x0) U1_ga(x0) U6_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (45) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (46) Obligation: Q DP problem: The TRS P consists of the following rules: U7_G(half_out_ga(s(x0))) -> U8_G(U2_ga(pred_in_ga(s(x0)))) U8_G(double_out_ga(s(s(y_0)))) -> F_IN_G(s(s(y_0))) F_IN_G(s(s(x0))) -> U7_G(U4_ga(U1_ga(pred_in_ga(s(x0))))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0) double_in_ga(s(X)) -> U2_ga(pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(pred_in_ga(s(s(X)))) U2_ga(pred_out_ga(Z)) -> U3_ga(double_in_ga(Z)) U4_ga(pred_out_ga(Y)) -> U5_ga(pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(0) pred_in_ga(s(s(X))) -> U1_ga(pred_in_ga(s(X))) U3_ga(double_out_ga(Y)) -> double_out_ga(s(s(Y))) U5_ga(pred_out_ga(Z)) -> U6_ga(half_in_ga(Z)) U1_ga(pred_out_ga(Y)) -> pred_out_ga(s(Y)) pred_in_ga(0) -> pred_out_ga(0) U6_ga(half_out_ga(U)) -> half_out_ga(s(U)) half_in_ga(0) -> half_out_ga(0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0) U4_ga(x0) pred_in_ga(x0) U3_ga(x0) U5_ga(x0) U1_ga(x0) U6_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (47) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: f_in_1: (b) half_in_2: (b,f) pred_in_2: (b,f) double_in_2: (b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (48) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) ---------------------------------------- (49) 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: F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) F_IN_G(s(X)) -> HALF_IN_GA(s(X), Y) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) HALF_IN_GA(s(s(X)), s(U)) -> PRED_IN_GA(s(s(X)), Y) PRED_IN_GA(s(s(X)), s(Y)) -> U1_GA(X, Y, pred_in_ga(s(X), Y)) PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> PRED_IN_GA(Y, Z) U5_GA(X, U, pred_out_ga(Y, Z)) -> U6_GA(X, U, half_in_ga(Z, U)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U7_G(X, half_out_ga(s(X), Y)) -> DOUBLE_IN_GA(Y, Z) DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) DOUBLE_IN_GA(s(X), s(s(Y))) -> PRED_IN_GA(s(X), Z) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> U3_GA(X, Y, double_in_ga(Z, Y)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) U8_G(X, double_out_ga(Y, Z)) -> U9_G(X, f_in_g(Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x1, x2) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x1, x3) U6_GA(x1, x2, x3) = U6_GA(x1, x3) U8_G(x1, x2) = U8_G(x1, x2) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x1, x3) U3_GA(x1, x2, x3) = U3_GA(x1, x3) U9_G(x1, x2) = U9_G(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (50) Obligation: Pi DP problem: The TRS P consists of the following rules: F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) F_IN_G(s(X)) -> HALF_IN_GA(s(X), Y) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) HALF_IN_GA(s(s(X)), s(U)) -> PRED_IN_GA(s(s(X)), Y) PRED_IN_GA(s(s(X)), s(Y)) -> U1_GA(X, Y, pred_in_ga(s(X), Y)) PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> PRED_IN_GA(Y, Z) U5_GA(X, U, pred_out_ga(Y, Z)) -> U6_GA(X, U, half_in_ga(Z, U)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U7_G(X, half_out_ga(s(X), Y)) -> DOUBLE_IN_GA(Y, Z) DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) DOUBLE_IN_GA(s(X), s(s(Y))) -> PRED_IN_GA(s(X), Z) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> U3_GA(X, Y, double_in_ga(Z, Y)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) U8_G(X, double_out_ga(Y, Z)) -> U9_G(X, f_in_g(Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x1, x2) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x1, x3) U6_GA(x1, x2, x3) = U6_GA(x1, x3) U8_G(x1, x2) = U8_G(x1, x2) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x1, x3) U3_GA(x1, x2, x3) = U3_GA(x1, x3) U9_G(x1, x2) = U9_G(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (51) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 4 SCCs with 9 less nodes. ---------------------------------------- (52) Complex Obligation (AND) ---------------------------------------- (53) Obligation: Pi DP problem: The TRS P consists of the following rules: PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (54) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (55) Obligation: Pi DP problem: The TRS P consists of the following rules: PRED_IN_GA(s(s(X)), s(Y)) -> PRED_IN_GA(s(X), Y) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) PRED_IN_GA(x1, x2) = PRED_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (56) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (57) Obligation: Q DP problem: The TRS P consists of the following rules: PRED_IN_GA(s(s(X))) -> PRED_IN_GA(s(X)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (58) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *PRED_IN_GA(s(s(X))) -> PRED_IN_GA(s(X)) The graph contains the following edges 1 > 1 ---------------------------------------- (59) YES ---------------------------------------- (60) Obligation: Pi DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (61) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (62) Obligation: Pi DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X), s(s(Y))) -> U2_GA(X, Y, pred_in_ga(s(X), Z)) U2_GA(X, Y, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z, Y) The TRS R consists of the following rules: pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The argument filtering Pi contains the following mapping: s(x1) = s(x1) 0 = 0 pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) DOUBLE_IN_GA(x1, x2) = DOUBLE_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (63) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (64) Obligation: Q DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X)) -> U2_GA(X, pred_in_ga(s(X))) U2_GA(X, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z) The TRS R consists of the following rules: pred_in_ga(s(0)) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (65) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented dependency pairs: U2_GA(X, pred_out_ga(s(X), Z)) -> DOUBLE_IN_GA(Z) Strictly oriented rules of the TRS R: pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) Used ordering: Polynomial interpretation [POLO]: POL(0) = 1 POL(DOUBLE_IN_GA(x_1)) = 2 + x_1 POL(U1_ga(x_1, x_2)) = 2*x_2 POL(U2_GA(x_1, x_2)) = 2 + x_2 POL(pred_in_ga(x_1)) = x_1 POL(pred_out_ga(x_1, x_2)) = 2 + x_2 POL(s(x_1)) = 1 + 2*x_1 ---------------------------------------- (66) Obligation: Q DP problem: The TRS P consists of the following rules: DOUBLE_IN_GA(s(X)) -> U2_GA(X, pred_in_ga(s(X))) The TRS R consists of the following rules: pred_in_ga(s(0)) -> pred_out_ga(s(0), 0) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (67) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (68) TRUE ---------------------------------------- (69) Obligation: Pi DP problem: The TRS P consists of the following rules: U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (70) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (71) Obligation: Pi DP problem: The TRS P consists of the following rules: U4_GA(X, U, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, U, pred_in_ga(Y, Z)) U5_GA(X, U, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z, U) HALF_IN_GA(s(s(X)), s(U)) -> U4_GA(X, U, pred_in_ga(s(s(X)), Y)) The TRS R consists of the following rules: pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The argument filtering Pi contains the following mapping: s(x1) = s(x1) 0 = 0 pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) HALF_IN_GA(x1, x2) = HALF_IN_GA(x1) U4_GA(x1, x2, x3) = U4_GA(x1, x3) U5_GA(x1, x2, x3) = U5_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (72) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (73) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, pred_in_ga(Y)) U5_GA(X, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(X, pred_in_ga(s(s(X)))) The TRS R consists of the following rules: pred_in_ga(0) -> pred_out_ga(0, 0) pred_in_ga(s(0)) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (74) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule HALF_IN_GA(s(s(X))) -> U4_GA(X, pred_in_ga(s(s(X)))) at position [1] we obtained the following new rules [LPAR04]: (HALF_IN_GA(s(s(X))) -> U4_GA(X, U1_ga(X, pred_in_ga(s(X)))),HALF_IN_GA(s(s(X))) -> U4_GA(X, U1_ga(X, pred_in_ga(s(X))))) ---------------------------------------- (75) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, pred_in_ga(Y)) U5_GA(X, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(X, U1_ga(X, pred_in_ga(s(X)))) The TRS R consists of the following rules: pred_in_ga(0) -> pred_out_ga(0, 0) pred_in_ga(s(0)) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (76) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented rules of the TRS R: pred_in_ga(s(0)) -> pred_out_ga(s(0), 0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 2 POL(HALF_IN_GA(x_1)) = 2*x_1 POL(U1_ga(x_1, x_2)) = 2*x_2 POL(U4_GA(x_1, x_2)) = 2*x_2 POL(U5_GA(x_1, x_2)) = 2*x_2 POL(pred_in_ga(x_1)) = x_1 POL(pred_out_ga(x_1, x_2)) = x_2 POL(s(x_1)) = 2*x_1 ---------------------------------------- (77) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, pred_in_ga(Y)) U5_GA(X, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(X, U1_ga(X, pred_in_ga(s(X)))) The TRS R consists of the following rules: pred_in_ga(0) -> pred_out_ga(0, 0) pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (78) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented rules of the TRS R: pred_in_ga(0) -> pred_out_ga(0, 0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 1 POL(HALF_IN_GA(x_1)) = 0 POL(U1_ga(x_1, x_2)) = 2*x_2 POL(U4_GA(x_1, x_2)) = 2*x_2 POL(U5_GA(x_1, x_2)) = x_2 POL(pred_in_ga(x_1)) = 2*x_1 POL(pred_out_ga(x_1, x_2)) = x_2 POL(s(x_1)) = 0 ---------------------------------------- (79) Obligation: Q DP problem: The TRS P consists of the following rules: U4_GA(X, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, pred_in_ga(Y)) U5_GA(X, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(X, U1_ga(X, pred_in_ga(s(X)))) The TRS R consists of the following rules: pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (80) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U4_GA(X, pred_out_ga(s(s(X)), Y)) -> U5_GA(X, pred_in_ga(Y)) U5_GA(X, pred_out_ga(Y, Z)) -> HALF_IN_GA(Z) HALF_IN_GA(s(s(X))) -> U4_GA(X, U1_ga(X, pred_in_ga(s(X)))) The remaining pairs can at least be oriented weakly. Used ordering: Combined order from the following AFS and order. U4_GA(x1, x2) = U4_GA U5_GA(x1, x2) = x2 pred_in_ga(x1) = pred_in_ga pred_out_ga(x1, x2) = pred_out_ga HALF_IN_GA(x1) = HALF_IN_GA U1_ga(x1, x2) = x2 Knuth-Bendix order [KBO] with precedence:HALF_IN_GA > U4_GA > pred_in_ga and weight map: HALF_IN_GA=1 U4_GA=1 pred_out_ga=2 pred_in_ga=1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) ---------------------------------------- (81) Obligation: Q DP problem: P is empty. The TRS R consists of the following rules: pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) The set Q consists of the following terms: pred_in_ga(x0) U1_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (82) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (83) YES ---------------------------------------- (84) Obligation: Pi DP problem: The TRS P consists of the following rules: U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) The TRS R consists of the following rules: f_in_g(s(X)) -> U7_g(X, half_in_ga(s(X), Y)) half_in_ga(0, 0) -> half_out_ga(0, 0) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) U7_g(X, half_out_ga(s(X), Y)) -> U8_g(X, double_in_ga(Y, Z)) double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U8_g(X, double_out_ga(Y, Z)) -> U9_g(X, f_in_g(Z)) U9_g(X, f_out_g(Z)) -> f_out_g(s(X)) The argument filtering Pi contains the following mapping: f_in_g(x1) = f_in_g(x1) s(x1) = s(x1) U7_g(x1, x2) = U7_g(x1, x2) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) U8_g(x1, x2) = U8_g(x1, x2) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) U9_g(x1, x2) = U9_g(x1, x2) f_out_g(x1) = f_out_g(x1) F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x1, x2) U8_G(x1, x2) = U8_G(x1, x2) 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: U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y, Z)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X), Y)) The TRS R consists of the following rules: double_in_ga(0, 0) -> double_out_ga(0, 0) double_in_ga(s(X), s(s(Y))) -> U2_ga(X, Y, pred_in_ga(s(X), Z)) half_in_ga(s(s(X)), s(U)) -> U4_ga(X, U, pred_in_ga(s(s(X)), Y)) U2_ga(X, Y, pred_out_ga(s(X), Z)) -> U3_ga(X, Y, double_in_ga(Z, Y)) U4_ga(X, U, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, U, pred_in_ga(Y, Z)) pred_in_ga(s(0), 0) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X)), s(Y)) -> U1_ga(X, Y, pred_in_ga(s(X), Y)) U3_ga(X, Y, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U5_ga(X, U, pred_out_ga(Y, Z)) -> U6_ga(X, U, half_in_ga(Z, U)) U1_ga(X, Y, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) pred_in_ga(0, 0) -> pred_out_ga(0, 0) U6_ga(X, U, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) half_in_ga(0, 0) -> half_out_ga(0, 0) The argument filtering Pi contains the following mapping: s(x1) = s(x1) half_in_ga(x1, x2) = half_in_ga(x1) 0 = 0 half_out_ga(x1, x2) = half_out_ga(x1, x2) U4_ga(x1, x2, x3) = U4_ga(x1, x3) pred_in_ga(x1, x2) = pred_in_ga(x1) pred_out_ga(x1, x2) = pred_out_ga(x1, x2) U1_ga(x1, x2, x3) = U1_ga(x1, x3) U5_ga(x1, x2, x3) = U5_ga(x1, x3) U6_ga(x1, x2, x3) = U6_ga(x1, x3) double_in_ga(x1, x2) = double_in_ga(x1) double_out_ga(x1, x2) = double_out_ga(x1, x2) U2_ga(x1, x2, x3) = U2_ga(x1, x3) U3_ga(x1, x2, x3) = U3_ga(x1, x3) F_IN_G(x1) = F_IN_G(x1) U7_G(x1, x2) = U7_G(x1, x2) U8_G(x1, x2) = U8_G(x1, x2) 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: U7_G(X, half_out_ga(s(X), Y)) -> U8_G(X, double_in_ga(Y)) U8_G(X, double_out_ga(Y, Z)) -> F_IN_G(Z) F_IN_G(s(X)) -> U7_G(X, half_in_ga(s(X))) The TRS R consists of the following rules: double_in_ga(0) -> double_out_ga(0, 0) double_in_ga(s(X)) -> U2_ga(X, pred_in_ga(s(X))) half_in_ga(s(s(X))) -> U4_ga(X, pred_in_ga(s(s(X)))) U2_ga(X, pred_out_ga(s(X), Z)) -> U3_ga(X, double_in_ga(Z)) U4_ga(X, pred_out_ga(s(s(X)), Y)) -> U5_ga(X, pred_in_ga(Y)) pred_in_ga(s(0)) -> pred_out_ga(s(0), 0) pred_in_ga(s(s(X))) -> U1_ga(X, pred_in_ga(s(X))) U3_ga(X, double_out_ga(Z, Y)) -> double_out_ga(s(X), s(s(Y))) U5_ga(X, pred_out_ga(Y, Z)) -> U6_ga(X, half_in_ga(Z)) U1_ga(X, pred_out_ga(s(X), Y)) -> pred_out_ga(s(s(X)), s(Y)) pred_in_ga(0) -> pred_out_ga(0, 0) U6_ga(X, half_out_ga(Z, U)) -> half_out_ga(s(s(X)), s(U)) half_in_ga(0) -> half_out_ga(0, 0) The set Q consists of the following terms: double_in_ga(x0) half_in_ga(x0) U2_ga(x0, x1) U4_ga(x0, x1) pred_in_ga(x0) U3_ga(x0, x1) U5_ga(x0, x1) U1_ga(x0, x1) U6_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (89) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 1, "program": { "directives": [], "clauses": [ [ "(pred (0) (0))", null ], [ "(pred (s (0)) (0))", null ], [ "(pred (s (s X)) (s Y))", "(pred (s X) Y)" ], [ "(double (0) (0))", null ], [ "(double (s X) (s (s Y)))", "(',' (pred (s X) Z) (double Z Y))" ], [ "(half (0) (0))", null ], [ "(half (s (s X)) (s U))", "(',' (pred (s (s X)) Y) (',' (pred Y Z) (half Z U)))" ], [ "(f (s X))", "(',' (half (s X) Y) (',' (double Y Z) (f Z)))" ] ] }, "graph": { "nodes": { "270": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "153": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (half (s T3) X3) (',' (double X3 X4) (f X4)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T3"], "free": [ "X3", "X4" ], "exprvars": [] } }, "230": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T10) X26)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "154": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "155": { "goal": [ { "clause": 5, "scope": 2, "term": "(',' (half (s T3) X3) (',' (double X3 X4) (f X4)))" }, { "clause": 6, "scope": 2, "term": "(',' (half (s T3) X3) (',' (double X3 X4) (f X4)))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T3"], "free": [ "X3", "X4" ], "exprvars": [] } }, "430": { "goal": [ { "clause": 3, "scope": 7, "term": "(double (s T18) X4)" }, { "clause": 4, "scope": 7, "term": "(double (s T18) X4)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "156": { "goal": [{ "clause": 6, "scope": 2, "term": "(',' (half (s T3) X3) (',' (double X3 X4) (f X4)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T3"], "free": [ "X3", "X4" ], "exprvars": [] } }, "431": { "goal": [{ "clause": 4, "scope": 7, "term": "(double (s T18) X4)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "157": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (',' (pred (s (s T6)) X15) (',' (pred X15 X16) (half X16 X17))) (',' (double (s X17) X4) (f X4)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": [ "X4", "X17", "X15", "X16" ], "exprvars": [] } }, "432": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s T27) X67) (double X67 X68))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": [ "X68", "X67" ], "exprvars": [] } }, "158": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "433": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T27) X67)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": ["X67"], "exprvars": [] } }, "357": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "434": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T28 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "358": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (half T14 X17) (',' (double (s X17) X4) (f X4)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": [ "X4", "X17" ], "exprvars": [] } }, "435": { "goal": [ { "clause": 3, "scope": 8, "term": "(double T28 X68)" }, { "clause": 4, "scope": 8, "term": "(double T28 X68)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "359": { "goal": [ { "clause": 0, "scope": 5, "term": "(pred T7 X16)" }, { "clause": 1, "scope": 5, "term": "(pred T7 X16)" }, { "clause": 2, "scope": 5, "term": "(pred T7 X16)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "436": { "goal": [{ "clause": 3, "scope": 8, "term": "(double T28 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "437": { "goal": [{ "clause": 4, "scope": 8, "term": "(double T28 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "438": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "439": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "360": { "goal": [{ "clause": 0, "scope": 5, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "163": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T6)) X15)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": ["X15"], "exprvars": [] } }, "361": { "goal": [ { "clause": 1, "scope": 5, "term": "(pred T7 X16)" }, { "clause": 2, "scope": 5, "term": "(pred T7 X16)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "164": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (',' (pred T7 X16) (half X16 X17)) (',' (double (s X17) X4) (f X4)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": [ "X4", "X17", "X16" ], "exprvars": [] } }, "362": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "363": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "440": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "364": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "441": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s T31) X78) (double X78 X79))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T31"], "free": [ "X79", "X78" ], "exprvars": [] } }, "365": { "goal": [{ "clause": 1, "scope": 5, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "442": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "366": { "goal": [{ "clause": 2, "scope": 5, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "367": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "5": { "goal": [{ "clause": 7, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "368": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "175": { "goal": [ { "clause": 0, "scope": 3, "term": "(pred (s (s T6)) X15)" }, { "clause": 1, "scope": 3, "term": "(pred (s (s T6)) X15)" }, { "clause": 2, "scope": 3, "term": "(pred (s (s T6)) X15)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": ["X15"], "exprvars": [] } }, "255": { "goal": [ { "clause": 0, "scope": 4, "term": "(pred (s T10) X26)" }, { "clause": 1, "scope": 4, "term": "(pred (s T10) X26)" }, { "clause": 2, "scope": 4, "term": "(pred (s T10) X26)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "257": { "goal": [ { "clause": 1, "scope": 4, "term": "(pred (s T10) X26)" }, { "clause": 2, "scope": 4, "term": "(pred (s T10) X26)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "411": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "412": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T17) X44)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T17"], "free": ["X44"], "exprvars": [] } }, "259": { "goal": [{ "clause": 1, "scope": 4, "term": "(pred (s T10) X26)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "413": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "414": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T14 X17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "415": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (double (s T18) X4) (f X4))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "416": { "goal": [ { "clause": 5, "scope": 6, "term": "(half T14 X17)" }, { "clause": 6, "scope": 6, "term": "(half T14 X17)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "417": { "goal": [{ "clause": 5, "scope": 6, "term": "(half T14 X17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "418": { "goal": [{ "clause": 6, "scope": 6, "term": "(half T14 X17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "419": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "182": { "goal": [ { "clause": 1, "scope": 3, "term": "(pred (s (s T6)) X15)" }, { "clause": 2, "scope": 3, "term": "(pred (s (s T6)) X15)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": ["X15"], "exprvars": [] } }, "260": { "goal": [{ "clause": 2, "scope": 4, "term": "(pred (s T10) X26)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "185": { "goal": [{ "clause": 2, "scope": 3, "term": "(pred (s (s T6)) X15)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": ["X15"], "exprvars": [] } }, "263": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "265": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "420": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "267": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "421": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "422": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s (s T21)) X55) (',' (pred X55 X56) (half X56 X57)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T21"], "free": [ "X57", "X55", "X56" ], "exprvars": [] } }, "269": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T13) X35)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T13"], "free": ["X35"], "exprvars": [] } }, "423": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "424": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T21)) X55)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T21"], "free": ["X55"], "exprvars": [] } }, "425": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred T22 X56) (half X56 X57))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T22"], "free": [ "X57", "X56" ], "exprvars": [] } }, "426": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T22 X56)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T22"], "free": ["X56"], "exprvars": [] } }, "427": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T23 X57)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T23"], "free": ["X57"], "exprvars": [] } }, "428": { "goal": [{ "clause": -1, "scope": -1, "term": "(double (s T18) X4)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "429": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T24"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 1, "to": 5, "label": "CASE" }, { "from": 5, "to": 153, "label": "EVAL with clause\nf(s(X2)) :- ','(half(s(X2), X3), ','(double(X3, X4), f(X4))).\nand substitutionX2 -> T3,\nT1 -> s(T3)" }, { "from": 5, "to": 154, "label": "EVAL-BACKTRACK" }, { "from": 153, "to": 155, "label": "CASE" }, { "from": 155, "to": 156, "label": "BACKTRACK\nfor clause: half(0, 0)because of non-unification" }, { "from": 156, "to": 157, "label": "EVAL with clause\nhalf(s(s(X13)), s(X14)) :- ','(pred(s(s(X13)), X15), ','(pred(X15, X16), half(X16, X14))).\nand substitutionX13 -> T6,\nT3 -> s(T6),\nX14 -> X17,\nX3 -> s(X17)" }, { "from": 156, "to": 158, "label": "EVAL-BACKTRACK" }, { "from": 157, "to": 163, "label": "SPLIT 1" }, { "from": 157, "to": 164, "label": "SPLIT 2\nnew knowledge:\nT6 is ground\nT7 is ground\nreplacements:X15 -> T7" }, { "from": 163, "to": 175, "label": "CASE" }, { "from": 164, "to": 357, "label": "SPLIT 1" }, { "from": 164, "to": 358, "label": "SPLIT 2\nnew knowledge:\nT7 is ground\nT14 is ground\nreplacements:X16 -> T14" }, { "from": 175, "to": 182, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 182, "to": 185, "label": "BACKTRACK\nfor clause: pred(s(0), 0)because of non-unification" }, { "from": 185, "to": 230, "label": "ONLY EVAL with clause\npred(s(s(X24)), s(X25)) :- pred(s(X24), X25).\nand substitutionT6 -> T10,\nX24 -> T10,\nX25 -> X26,\nX15 -> s(X26)" }, { "from": 230, "to": 255, "label": "CASE" }, { "from": 255, "to": 257, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 257, "to": 259, "label": "PARALLEL" }, { "from": 257, "to": 260, "label": "PARALLEL" }, { "from": 259, "to": 263, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT10 -> 0,\nX26 -> 0" }, { "from": 259, "to": 265, "label": "EVAL-BACKTRACK" }, { "from": 260, "to": 269, "label": "EVAL with clause\npred(s(s(X33)), s(X34)) :- pred(s(X33), X34).\nand substitutionX33 -> T13,\nT10 -> s(T13),\nX34 -> X35,\nX26 -> s(X35)" }, { "from": 260, "to": 270, "label": "EVAL-BACKTRACK" }, { "from": 263, "to": 267, "label": "SUCCESS" }, { "from": 269, "to": 230, "label": "INSTANCE with matching:\nT10 -> T13\nX26 -> X35" }, { "from": 357, "to": 359, "label": "CASE" }, { "from": 358, "to": 414, "label": "SPLIT 1" }, { "from": 358, "to": 415, "label": "SPLIT 2\nnew knowledge:\nT14 is ground\nT18 is ground\nreplacements:X17 -> T18" }, { "from": 359, "to": 360, "label": "PARALLEL" }, { "from": 359, "to": 361, "label": "PARALLEL" }, { "from": 360, "to": 362, "label": "EVAL with clause\npred(0, 0).\nand substitutionT7 -> 0,\nX16 -> 0" }, { "from": 360, "to": 363, "label": "EVAL-BACKTRACK" }, { "from": 361, "to": 365, "label": "PARALLEL" }, { "from": 361, "to": 366, "label": "PARALLEL" }, { "from": 362, "to": 364, "label": "SUCCESS" }, { "from": 365, "to": 367, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT7 -> s(0),\nX16 -> 0" }, { "from": 365, "to": 368, "label": "EVAL-BACKTRACK" }, { "from": 366, "to": 412, "label": "EVAL with clause\npred(s(s(X42)), s(X43)) :- pred(s(X42), X43).\nand substitutionX42 -> T17,\nT7 -> s(s(T17)),\nX43 -> X44,\nX16 -> s(X44)" }, { "from": 366, "to": 413, "label": "EVAL-BACKTRACK" }, { "from": 367, "to": 411, "label": "SUCCESS" }, { "from": 412, "to": 357, "label": "INSTANCE with matching:\nT7 -> s(T17)\nX16 -> X44" }, { "from": 414, "to": 416, "label": "CASE" }, { "from": 415, "to": 428, "label": "SPLIT 1" }, { "from": 415, "to": 429, "label": "SPLIT 2\nnew knowledge:\nT18 is ground\nT24 is ground\nreplacements:X4 -> T24" }, { "from": 416, "to": 417, "label": "PARALLEL" }, { "from": 416, "to": 418, "label": "PARALLEL" }, { "from": 417, "to": 419, "label": "EVAL with clause\nhalf(0, 0).\nand substitutionT14 -> 0,\nX17 -> 0" }, { "from": 417, "to": 420, "label": "EVAL-BACKTRACK" }, { "from": 418, "to": 422, "label": "EVAL with clause\nhalf(s(s(X53)), s(X54)) :- ','(pred(s(s(X53)), X55), ','(pred(X55, X56), half(X56, X54))).\nand substitutionX53 -> T21,\nT14 -> s(s(T21)),\nX54 -> X57,\nX17 -> s(X57)" }, { "from": 418, "to": 423, "label": "EVAL-BACKTRACK" }, { "from": 419, "to": 421, "label": "SUCCESS" }, { "from": 422, "to": 424, "label": "SPLIT 1" }, { "from": 422, "to": 425, "label": "SPLIT 2\nnew knowledge:\nT21 is ground\nT22 is ground\nreplacements:X55 -> T22" }, { "from": 424, "to": 163, "label": "INSTANCE with matching:\nT6 -> T21\nX15 -> X55" }, { "from": 425, "to": 426, "label": "SPLIT 1" }, { "from": 425, "to": 427, "label": "SPLIT 2\nnew knowledge:\nT22 is ground\nT23 is ground\nreplacements:X56 -> T23" }, { "from": 426, "to": 357, "label": "INSTANCE with matching:\nT7 -> T22\nX16 -> X56" }, { "from": 427, "to": 414, "label": "INSTANCE with matching:\nT14 -> T23\nX17 -> X57" }, { "from": 428, "to": 430, "label": "CASE" }, { "from": 429, "to": 1, "label": "INSTANCE with matching:\nT1 -> T24" }, { "from": 430, "to": 431, "label": "BACKTRACK\nfor clause: double(0, 0)because of non-unification" }, { "from": 431, "to": 432, "label": "ONLY EVAL with clause\ndouble(s(X65), s(s(X66))) :- ','(pred(s(X65), X67), double(X67, X66)).\nand substitutionT18 -> T27,\nX65 -> T27,\nX66 -> X68,\nX4 -> s(s(X68))" }, { "from": 432, "to": 433, "label": "SPLIT 1" }, { "from": 432, "to": 434, "label": "SPLIT 2\nnew knowledge:\nT27 is ground\nT28 is ground\nreplacements:X67 -> T28" }, { "from": 433, "to": 357, "label": "INSTANCE with matching:\nT7 -> s(T27)\nX16 -> X67" }, { "from": 434, "to": 435, "label": "CASE" }, { "from": 435, "to": 436, "label": "PARALLEL" }, { "from": 435, "to": 437, "label": "PARALLEL" }, { "from": 436, "to": 438, "label": "EVAL with clause\ndouble(0, 0).\nand substitutionT28 -> 0,\nX68 -> 0" }, { "from": 436, "to": 439, "label": "EVAL-BACKTRACK" }, { "from": 437, "to": 441, "label": "EVAL with clause\ndouble(s(X76), s(s(X77))) :- ','(pred(s(X76), X78), double(X78, X77)).\nand substitutionX76 -> T31,\nT28 -> s(T31),\nX77 -> X79,\nX68 -> s(s(X79))" }, { "from": 437, "to": 442, "label": "EVAL-BACKTRACK" }, { "from": 438, "to": 440, "label": "SUCCESS" }, { "from": 441, "to": 432, "label": "INSTANCE with matching:\nT27 -> T31\nX67 -> X78\nX68 -> X79" } ], "type": "Graph" } } ---------------------------------------- (90) Obligation: Triples: predA(s(X1), s(X2)) :- predA(X1, X2). predB(s(s(X1)), s(X2)) :- predB(s(X1), X2). predC(X1, s(X2)) :- predA(X1, X2). halfD(s(s(X1)), s(X2)) :- predC(X1, X3). halfD(s(s(X1)), s(X2)) :- ','(predcC(X1, X3), predB(X3, X4)). halfD(s(s(X1)), s(X2)) :- ','(predcC(X1, X3), ','(predcB(X3, X4), halfD(X4, X2))). pG(X1, X2, X3) :- predB(s(X1), X2). pG(X1, s(X2), s(s(X3))) :- ','(predcB(s(X1), s(X2)), pG(X2, X4, X3)). fE(s(s(X1))) :- predC(X1, X2). fE(s(s(X1))) :- ','(predcC(X1, X2), predB(X2, X3)). fE(s(s(X1))) :- ','(predcC(X1, X2), ','(predcB(X2, X3), halfD(X3, X4))). fE(s(s(X1))) :- ','(predcC(X1, X2), ','(predcB(X2, X3), ','(halfcD(X3, X4), pG(X4, X5, X6)))). fE(s(s(X1))) :- ','(predcC(X1, X2), ','(predcB(X2, X3), ','(halfcD(X3, X4), ','(doublecF(X4, X5), fE(X5))))). Clauses: predcA(0, 0). predcA(s(X1), s(X2)) :- predcA(X1, X2). predcB(0, 0). predcB(s(0), 0). predcB(s(s(X1)), s(X2)) :- predcB(s(X1), X2). predcC(X1, s(X2)) :- predcA(X1, X2). halfcD(0, 0). halfcD(s(s(X1)), s(X2)) :- ','(predcC(X1, X3), ','(predcB(X3, X4), halfcD(X4, X2))). fcE(s(s(X1))) :- ','(predcC(X1, X2), ','(predcB(X2, X3), ','(halfcD(X3, X4), ','(doublecF(X4, X5), fcE(X5))))). qcG(X1, 0, 0) :- predcB(s(X1), 0). qcG(X1, s(X2), s(s(X3))) :- ','(predcB(s(X1), s(X2)), qcG(X2, X4, X3)). doublecF(X1, s(s(X2))) :- qcG(X1, X3, X2). Afs: fE(x1) = fE(x1) ---------------------------------------- (91) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: fE_in_1: (b) predC_in_2: (b,f) predA_in_2: (b,f) predcC_in_2: (b,f) predcA_in_2: (b,f) predB_in_2: (b,f) predcB_in_2: (b,f) (b,b) halfD_in_2: (b,f) halfcD_in_2: (b,f) pG_in_3: (b,f,f) doublecF_in_2: (b,f) qcG_in_3: (b,f,f) Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: FE_IN_G(s(s(X1))) -> U12_G(X1, predC_in_ga(X1, X2)) FE_IN_G(s(s(X1))) -> PREDC_IN_GA(X1, X2) PREDC_IN_GA(X1, s(X2)) -> U3_GA(X1, X2, predA_in_ga(X1, X2)) PREDC_IN_GA(X1, s(X2)) -> PREDA_IN_GA(X1, X2) PREDA_IN_GA(s(X1), s(X2)) -> U1_GA(X1, X2, predA_in_ga(X1, X2)) PREDA_IN_GA(s(X1), s(X2)) -> PREDA_IN_GA(X1, X2) FE_IN_G(s(s(X1))) -> U13_G(X1, predcC_in_ga(X1, X2)) U13_G(X1, predcC_out_ga(X1, X2)) -> U14_G(X1, predB_in_ga(X2, X3)) U13_G(X1, predcC_out_ga(X1, X2)) -> PREDB_IN_GA(X2, X3) PREDB_IN_GA(s(s(X1)), s(X2)) -> U2_GA(X1, X2, predB_in_ga(s(X1), X2)) PREDB_IN_GA(s(s(X1)), s(X2)) -> PREDB_IN_GA(s(X1), X2) U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2, X3)) U15_G(X1, predcB_out_ga(X2, X3)) -> U16_G(X1, halfD_in_ga(X3, X4)) U15_G(X1, predcB_out_ga(X2, X3)) -> HALFD_IN_GA(X3, X4) HALFD_IN_GA(s(s(X1)), s(X2)) -> U4_GA(X1, X2, predC_in_ga(X1, X3)) HALFD_IN_GA(s(s(X1)), s(X2)) -> PREDC_IN_GA(X1, X3) HALFD_IN_GA(s(s(X1)), s(X2)) -> U5_GA(X1, X2, predcC_in_ga(X1, X3)) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> U6_GA(X1, X2, predB_in_ga(X3, X4)) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> PREDB_IN_GA(X3, X4) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> U7_GA(X1, X2, predcB_in_ga(X3, X4)) U7_GA(X1, X2, predcB_out_ga(X3, X4)) -> U8_GA(X1, X2, halfD_in_ga(X4, X2)) U7_GA(X1, X2, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4, X2) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3, X4)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U18_G(X1, pG_in_gaa(X4, X5, X6)) U17_G(X1, halfcD_out_ga(X3, X4)) -> PG_IN_GAA(X4, X5, X6) PG_IN_GAA(X1, X2, X3) -> U9_GAA(X1, X2, X3, predB_in_ga(s(X1), X2)) PG_IN_GAA(X1, X2, X3) -> PREDB_IN_GA(s(X1), X2) PG_IN_GAA(X1, s(X2), s(s(X3))) -> U10_GAA(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U10_GAA(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U11_GAA(X1, X2, X3, pG_in_gaa(X2, X4, X3)) U10_GAA(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2, X4, X3) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4, X5)) U19_G(X1, doublecF_out_ga(X4, X5)) -> U20_G(X1, fE_in_g(X5)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: fE_in_g(x1) = fE_in_g(x1) s(x1) = s(x1) predC_in_ga(x1, x2) = predC_in_ga(x1) predA_in_ga(x1, x2) = predA_in_ga(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predB_in_ga(x1, x2) = predB_in_ga(x1) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfD_in_ga(x1, x2) = halfD_in_ga(x1) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) pG_in_gaa(x1, x2, x3) = pG_in_gaa(x1) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) FE_IN_G(x1) = FE_IN_G(x1) U12_G(x1, x2) = U12_G(x1, x2) PREDC_IN_GA(x1, x2) = PREDC_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) PREDA_IN_GA(x1, x2) = PREDA_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x1, x3) U13_G(x1, x2) = U13_G(x1, x2) U14_G(x1, x2) = U14_G(x1, x2) PREDB_IN_GA(x1, x2) = PREDB_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x1, x3) U15_G(x1, x2) = U15_G(x1, x2) U16_G(x1, x2) = U16_G(x1, x2) HALFD_IN_GA(x1, x2) = HALFD_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) U7_GA(x1, x2, x3) = U7_GA(x1, x3) U8_GA(x1, x2, x3) = U8_GA(x1, x3) U17_G(x1, x2) = U17_G(x1, x2) U18_G(x1, x2) = U18_G(x1, x2) PG_IN_GAA(x1, x2, x3) = PG_IN_GAA(x1) U9_GAA(x1, x2, x3, x4) = U9_GAA(x1, x4) U10_GAA(x1, x2, x3, x4) = U10_GAA(x1, x4) U11_GAA(x1, x2, x3, x4) = U11_GAA(x1, x2, x4) U19_G(x1, x2) = U19_G(x1, x2) U20_G(x1, x2) = U20_G(x1, x2) We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (92) Obligation: Pi DP problem: The TRS P consists of the following rules: FE_IN_G(s(s(X1))) -> U12_G(X1, predC_in_ga(X1, X2)) FE_IN_G(s(s(X1))) -> PREDC_IN_GA(X1, X2) PREDC_IN_GA(X1, s(X2)) -> U3_GA(X1, X2, predA_in_ga(X1, X2)) PREDC_IN_GA(X1, s(X2)) -> PREDA_IN_GA(X1, X2) PREDA_IN_GA(s(X1), s(X2)) -> U1_GA(X1, X2, predA_in_ga(X1, X2)) PREDA_IN_GA(s(X1), s(X2)) -> PREDA_IN_GA(X1, X2) FE_IN_G(s(s(X1))) -> U13_G(X1, predcC_in_ga(X1, X2)) U13_G(X1, predcC_out_ga(X1, X2)) -> U14_G(X1, predB_in_ga(X2, X3)) U13_G(X1, predcC_out_ga(X1, X2)) -> PREDB_IN_GA(X2, X3) PREDB_IN_GA(s(s(X1)), s(X2)) -> U2_GA(X1, X2, predB_in_ga(s(X1), X2)) PREDB_IN_GA(s(s(X1)), s(X2)) -> PREDB_IN_GA(s(X1), X2) U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2, X3)) U15_G(X1, predcB_out_ga(X2, X3)) -> U16_G(X1, halfD_in_ga(X3, X4)) U15_G(X1, predcB_out_ga(X2, X3)) -> HALFD_IN_GA(X3, X4) HALFD_IN_GA(s(s(X1)), s(X2)) -> U4_GA(X1, X2, predC_in_ga(X1, X3)) HALFD_IN_GA(s(s(X1)), s(X2)) -> PREDC_IN_GA(X1, X3) HALFD_IN_GA(s(s(X1)), s(X2)) -> U5_GA(X1, X2, predcC_in_ga(X1, X3)) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> U6_GA(X1, X2, predB_in_ga(X3, X4)) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> PREDB_IN_GA(X3, X4) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> U7_GA(X1, X2, predcB_in_ga(X3, X4)) U7_GA(X1, X2, predcB_out_ga(X3, X4)) -> U8_GA(X1, X2, halfD_in_ga(X4, X2)) U7_GA(X1, X2, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4, X2) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3, X4)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U18_G(X1, pG_in_gaa(X4, X5, X6)) U17_G(X1, halfcD_out_ga(X3, X4)) -> PG_IN_GAA(X4, X5, X6) PG_IN_GAA(X1, X2, X3) -> U9_GAA(X1, X2, X3, predB_in_ga(s(X1), X2)) PG_IN_GAA(X1, X2, X3) -> PREDB_IN_GA(s(X1), X2) PG_IN_GAA(X1, s(X2), s(s(X3))) -> U10_GAA(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U10_GAA(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U11_GAA(X1, X2, X3, pG_in_gaa(X2, X4, X3)) U10_GAA(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2, X4, X3) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4, X5)) U19_G(X1, doublecF_out_ga(X4, X5)) -> U20_G(X1, fE_in_g(X5)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: fE_in_g(x1) = fE_in_g(x1) s(x1) = s(x1) predC_in_ga(x1, x2) = predC_in_ga(x1) predA_in_ga(x1, x2) = predA_in_ga(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predB_in_ga(x1, x2) = predB_in_ga(x1) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfD_in_ga(x1, x2) = halfD_in_ga(x1) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) pG_in_gaa(x1, x2, x3) = pG_in_gaa(x1) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) FE_IN_G(x1) = FE_IN_G(x1) U12_G(x1, x2) = U12_G(x1, x2) PREDC_IN_GA(x1, x2) = PREDC_IN_GA(x1) U3_GA(x1, x2, x3) = U3_GA(x1, x3) PREDA_IN_GA(x1, x2) = PREDA_IN_GA(x1) U1_GA(x1, x2, x3) = U1_GA(x1, x3) U13_G(x1, x2) = U13_G(x1, x2) U14_G(x1, x2) = U14_G(x1, x2) PREDB_IN_GA(x1, x2) = PREDB_IN_GA(x1) U2_GA(x1, x2, x3) = U2_GA(x1, x3) U15_G(x1, x2) = U15_G(x1, x2) U16_G(x1, x2) = U16_G(x1, x2) HALFD_IN_GA(x1, x2) = HALFD_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) U7_GA(x1, x2, x3) = U7_GA(x1, x3) U8_GA(x1, x2, x3) = U8_GA(x1, x3) U17_G(x1, x2) = U17_G(x1, x2) U18_G(x1, x2) = U18_G(x1, x2) PG_IN_GAA(x1, x2, x3) = PG_IN_GAA(x1) U9_GAA(x1, x2, x3, x4) = U9_GAA(x1, x4) U10_GAA(x1, x2, x3, x4) = U10_GAA(x1, x4) U11_GAA(x1, x2, x3, x4) = U11_GAA(x1, x2, x4) U19_G(x1, x2) = U19_G(x1, x2) U20_G(x1, x2) = U20_G(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (93) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 21 less nodes. ---------------------------------------- (94) Complex Obligation (AND) ---------------------------------------- (95) Obligation: Pi DP problem: The TRS P consists of the following rules: PREDB_IN_GA(s(s(X1)), s(X2)) -> PREDB_IN_GA(s(X1), X2) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) PREDB_IN_GA(x1, x2) = PREDB_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (96) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (97) Obligation: Pi DP problem: The TRS P consists of the following rules: PREDB_IN_GA(s(s(X1)), s(X2)) -> PREDB_IN_GA(s(X1), X2) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) PREDB_IN_GA(x1, x2) = PREDB_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (98) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (99) Obligation: Q DP problem: The TRS P consists of the following rules: PREDB_IN_GA(s(s(X1))) -> PREDB_IN_GA(s(X1)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (100) 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: *PREDB_IN_GA(s(s(X1))) -> PREDB_IN_GA(s(X1)) The graph contains the following edges 1 > 1 ---------------------------------------- (101) YES ---------------------------------------- (102) Obligation: Pi DP problem: The TRS P consists of the following rules: PG_IN_GAA(X1, s(X2), s(s(X3))) -> U10_GAA(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U10_GAA(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2, X4, X3) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) PG_IN_GAA(x1, x2, x3) = PG_IN_GAA(x1) U10_GAA(x1, x2, x3, x4) = U10_GAA(x1, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (103) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (104) Obligation: Pi DP problem: The TRS P consists of the following rules: PG_IN_GAA(X1, s(X2), s(s(X3))) -> U10_GAA(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U10_GAA(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2, X4, X3) The TRS R consists of the following rules: predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) The argument filtering Pi contains the following mapping: s(x1) = s(x1) 0 = 0 predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) PG_IN_GAA(x1, x2, x3) = PG_IN_GAA(x1) U10_GAA(x1, x2, x3, x4) = U10_GAA(x1, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (105) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (106) Obligation: Q DP problem: The TRS P consists of the following rules: PG_IN_GAA(X1) -> U10_GAA(X1, predcB_in_ga(s(X1))) U10_GAA(X1, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2) The TRS R consists of the following rules: predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) The set Q consists of the following terms: predcB_in_ga(x0) U23_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (107) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented rules of the TRS R: predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(PG_IN_GAA(x_1)) = 2 + 2*x_1 POL(U10_GAA(x_1, x_2)) = x_2 POL(U23_ga(x_1, x_2)) = 2 + x_2 POL(predcB_in_ga(x_1)) = 2*x_1 POL(predcB_out_ga(x_1, x_2)) = 2*x_2 POL(s(x_1)) = 1 + x_1 ---------------------------------------- (108) Obligation: Q DP problem: The TRS P consists of the following rules: PG_IN_GAA(X1) -> U10_GAA(X1, predcB_in_ga(s(X1))) U10_GAA(X1, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2) The TRS R consists of the following rules: predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) The set Q consists of the following terms: predcB_in_ga(x0) U23_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (109) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. PG_IN_GAA(X1) -> U10_GAA(X1, predcB_in_ga(s(X1))) U10_GAA(X1, predcB_out_ga(s(X1), s(X2))) -> PG_IN_GAA(X2) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U10_GAA_2(x_1, x_2) ) = 2x_2 + 1 POL( predcB_in_ga_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = 2 POL( U23_ga_2(x_1, x_2) ) = 2x_2 POL( predcB_out_ga_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( PG_IN_GAA_1(x_1) ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) ---------------------------------------- (110) Obligation: Q DP problem: P is empty. The TRS R consists of the following rules: predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) The set Q consists of the following terms: predcB_in_ga(x0) U23_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (111) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (112) YES ---------------------------------------- (113) Obligation: Pi DP problem: The TRS P consists of the following rules: PREDA_IN_GA(s(X1), s(X2)) -> PREDA_IN_GA(X1, X2) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) PREDA_IN_GA(x1, x2) = PREDA_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (114) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (115) Obligation: Pi DP problem: The TRS P consists of the following rules: PREDA_IN_GA(s(X1), s(X2)) -> PREDA_IN_GA(X1, X2) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) PREDA_IN_GA(x1, x2) = PREDA_IN_GA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (116) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (117) Obligation: Q DP problem: The TRS P consists of the following rules: PREDA_IN_GA(s(X1)) -> PREDA_IN_GA(X1) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (118) 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: *PREDA_IN_GA(s(X1)) -> PREDA_IN_GA(X1) The graph contains the following edges 1 > 1 ---------------------------------------- (119) YES ---------------------------------------- (120) Obligation: Pi DP problem: The TRS P consists of the following rules: HALFD_IN_GA(s(s(X1)), s(X2)) -> U5_GA(X1, X2, predcC_in_ga(X1, X3)) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> U7_GA(X1, X2, predcB_in_ga(X3, X4)) U7_GA(X1, X2, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4, X2) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) HALFD_IN_GA(x1, x2) = HALFD_IN_GA(x1) U5_GA(x1, x2, x3) = U5_GA(x1, x3) U7_GA(x1, x2, x3) = U7_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (121) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (122) Obligation: Pi DP problem: The TRS P consists of the following rules: HALFD_IN_GA(s(s(X1)), s(X2)) -> U5_GA(X1, X2, predcC_in_ga(X1, X3)) U5_GA(X1, X2, predcC_out_ga(X1, X3)) -> U7_GA(X1, X2, predcB_in_ga(X3, X4)) U7_GA(X1, X2, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4, X2) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) HALFD_IN_GA(x1, x2) = HALFD_IN_GA(x1) U5_GA(x1, x2, x3) = U5_GA(x1, x3) U7_GA(x1, x2, x3) = U7_GA(x1, x3) We have to consider all (P,R,Pi)-chains ---------------------------------------- (123) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (124) Obligation: Q DP problem: The TRS P consists of the following rules: HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, predcC_in_ga(X1)) U5_GA(X1, predcC_out_ga(X1, X3)) -> U7_GA(X1, predcB_in_ga(X3)) U7_GA(X1, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4) The TRS R consists of the following rules: predcC_in_ga(X1) -> U24_ga(X1, predcA_in_ga(X1)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) The set Q consists of the following terms: predcC_in_ga(x0) predcB_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) predcA_in_ga(x0) U22_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (125) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, predcC_in_ga(X1)) at position [1] we obtained the following new rules [LPAR04]: (HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, U24_ga(X1, predcA_in_ga(X1))),HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, U24_ga(X1, predcA_in_ga(X1)))) ---------------------------------------- (126) Obligation: Q DP problem: The TRS P consists of the following rules: U5_GA(X1, predcC_out_ga(X1, X3)) -> U7_GA(X1, predcB_in_ga(X3)) U7_GA(X1, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4) HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, U24_ga(X1, predcA_in_ga(X1))) The TRS R consists of the following rules: predcC_in_ga(X1) -> U24_ga(X1, predcA_in_ga(X1)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) The set Q consists of the following terms: predcC_in_ga(x0) predcB_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) predcA_in_ga(x0) U22_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (127) 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. ---------------------------------------- (128) Obligation: Q DP problem: The TRS P consists of the following rules: U5_GA(X1, predcC_out_ga(X1, X3)) -> U7_GA(X1, predcB_in_ga(X3)) U7_GA(X1, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4) HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, U24_ga(X1, predcA_in_ga(X1))) The TRS R consists of the following rules: predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) The set Q consists of the following terms: predcC_in_ga(x0) predcB_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) predcA_in_ga(x0) U22_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (129) 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]. predcC_in_ga(x0) ---------------------------------------- (130) Obligation: Q DP problem: The TRS P consists of the following rules: U5_GA(X1, predcC_out_ga(X1, X3)) -> U7_GA(X1, predcB_in_ga(X3)) U7_GA(X1, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4) HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, U24_ga(X1, predcA_in_ga(X1))) The TRS R consists of the following rules: predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) The set Q consists of the following terms: predcB_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) predcA_in_ga(x0) U22_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (131) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented dependency pairs: U5_GA(X1, predcC_out_ga(X1, X3)) -> U7_GA(X1, predcB_in_ga(X3)) HALFD_IN_GA(s(s(X1))) -> U5_GA(X1, U24_ga(X1, predcA_in_ga(X1))) Strictly oriented rules of the TRS R: predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(HALFD_IN_GA(x_1)) = 2*x_1 POL(U22_ga(x_1, x_2)) = 2 + x_2 POL(U23_ga(x_1, x_2)) = 2 + x_2 POL(U24_ga(x_1, x_2)) = 2 + 2*x_2 POL(U5_GA(x_1, x_2)) = 2 + x_2 POL(U7_GA(x_1, x_2)) = 2*x_2 POL(predcA_in_ga(x_1)) = 1 + x_1 POL(predcA_out_ga(x_1, x_2)) = 1 + x_2 POL(predcB_in_ga(x_1)) = x_1 POL(predcB_out_ga(x_1, x_2)) = x_2 POL(predcC_out_ga(x_1, x_2)) = 2*x_2 POL(s(x_1)) = 2 + x_1 ---------------------------------------- (132) Obligation: Q DP problem: The TRS P consists of the following rules: U7_GA(X1, predcB_out_ga(X3, X4)) -> HALFD_IN_GA(X4) The TRS R consists of the following rules: predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) The set Q consists of the following terms: predcB_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) predcA_in_ga(x0) U22_ga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (133) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (134) TRUE ---------------------------------------- (135) Obligation: Pi DP problem: The TRS P consists of the following rules: FE_IN_G(s(s(X1))) -> U13_G(X1, predcC_in_ga(X1, X2)) U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2, X3)) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3, X4)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4, X5)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) predcB_in_gg(0, 0) -> predcB_out_gg(0, 0) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) predcB_in_gg(s(s(X1)), s(X2)) -> U23_gg(X1, X2, predcB_in_gg(s(X1), X2)) U23_gg(X1, X2, predcB_out_gg(s(X1), X2)) -> predcB_out_gg(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) U23_gg(x1, x2, x3) = U23_gg(x1, x2, x3) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) FE_IN_G(x1) = FE_IN_G(x1) U13_G(x1, x2) = U13_G(x1, x2) U15_G(x1, x2) = U15_G(x1, x2) U17_G(x1, x2) = U17_G(x1, x2) U19_G(x1, x2) = U19_G(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (136) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (137) Obligation: Pi DP problem: The TRS P consists of the following rules: FE_IN_G(s(s(X1))) -> U13_G(X1, predcC_in_ga(X1, X2)) U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2, X3)) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3, X4)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4, X5)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) The TRS R consists of the following rules: predcC_in_ga(X1, s(X2)) -> U24_ga(X1, X2, predcA_in_ga(X1, X2)) predcB_in_ga(0, 0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0), 0) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1)), s(X2)) -> U23_ga(X1, X2, predcB_in_ga(s(X1), X2)) halfcD_in_ga(0, 0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1)), s(X2)) -> U25_ga(X1, X2, predcC_in_ga(X1, X3)) doublecF_in_ga(X1, s(s(X2))) -> U36_ga(X1, X2, qcG_in_gaa(X1, X3, X2)) U24_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, X2, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) U25_ga(X1, X2, predcC_out_ga(X1, X3)) -> U26_ga(X1, X2, predcB_in_ga(X3, X4)) U36_ga(X1, X2, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) predcA_in_ga(0, 0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1), s(X2)) -> U22_ga(X1, X2, predcA_in_ga(X1, X2)) U26_ga(X1, X2, predcB_out_ga(X3, X4)) -> U27_ga(X1, X2, halfcD_in_ga(X4, X2)) qcG_in_gaa(X1, 0, 0) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) qcG_in_gaa(X1, s(X2), s(s(X3))) -> U34_gaa(X1, X2, X3, predcB_in_ga(s(X1), s(X2))) U22_ga(X1, X2, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U27_ga(X1, X2, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) U34_gaa(X1, X2, X3, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, X3, qcG_in_gaa(X2, X4, X3)) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) U35_gaa(X1, X2, X3, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) The argument filtering Pi contains the following mapping: s(x1) = s(x1) predcC_in_ga(x1, x2) = predcC_in_ga(x1) U24_ga(x1, x2, x3) = U24_ga(x1, x3) predcA_in_ga(x1, x2) = predcA_in_ga(x1) 0 = 0 predcA_out_ga(x1, x2) = predcA_out_ga(x1, x2) U22_ga(x1, x2, x3) = U22_ga(x1, x3) predcC_out_ga(x1, x2) = predcC_out_ga(x1, x2) predcB_in_ga(x1, x2) = predcB_in_ga(x1) predcB_out_ga(x1, x2) = predcB_out_ga(x1, x2) U23_ga(x1, x2, x3) = U23_ga(x1, x3) halfcD_in_ga(x1, x2) = halfcD_in_ga(x1) halfcD_out_ga(x1, x2) = halfcD_out_ga(x1, x2) U25_ga(x1, x2, x3) = U25_ga(x1, x3) U26_ga(x1, x2, x3) = U26_ga(x1, x3) U27_ga(x1, x2, x3) = U27_ga(x1, x3) doublecF_in_ga(x1, x2) = doublecF_in_ga(x1) U36_ga(x1, x2, x3) = U36_ga(x1, x3) qcG_in_gaa(x1, x2, x3) = qcG_in_gaa(x1) U33_gaa(x1, x2) = U33_gaa(x1, x2) predcB_in_gg(x1, x2) = predcB_in_gg(x1, x2) predcB_out_gg(x1, x2) = predcB_out_gg(x1, x2) qcG_out_gaa(x1, x2, x3) = qcG_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4) = U34_gaa(x1, x4) U35_gaa(x1, x2, x3, x4) = U35_gaa(x1, x2, x4) doublecF_out_ga(x1, x2) = doublecF_out_ga(x1, x2) FE_IN_G(x1) = FE_IN_G(x1) U13_G(x1, x2) = U13_G(x1, x2) U15_G(x1, x2) = U15_G(x1, x2) U17_G(x1, x2) = U17_G(x1, x2) U19_G(x1, x2) = U19_G(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (138) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (139) Obligation: Q DP problem: The TRS P consists of the following rules: FE_IN_G(s(s(X1))) -> U13_G(X1, predcC_in_ga(X1)) U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2)) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) The TRS R consists of the following rules: predcC_in_ga(X1) -> U24_ga(X1, predcA_in_ga(X1)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) halfcD_in_ga(0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1))) -> U25_ga(X1, predcC_in_ga(X1)) doublecF_in_ga(X1) -> U36_ga(X1, qcG_in_gaa(X1)) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) U25_ga(X1, predcC_out_ga(X1, X3)) -> U26_ga(X1, predcB_in_ga(X3)) U36_ga(X1, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U26_ga(X1, predcB_out_ga(X3, X4)) -> U27_ga(X1, halfcD_in_ga(X4)) qcG_in_gaa(X1) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) qcG_in_gaa(X1) -> U34_gaa(X1, predcB_in_ga(s(X1))) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U27_ga(X1, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) U34_gaa(X1, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, qcG_in_gaa(X2)) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) U35_gaa(X1, X2, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) The set Q consists of the following terms: predcC_in_ga(x0) predcB_in_ga(x0) halfcD_in_ga(x0) doublecF_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) U25_ga(x0, x1) U36_ga(x0, x1) predcA_in_ga(x0) U26_ga(x0, x1) qcG_in_gaa(x0) U22_ga(x0, x1) U27_ga(x0, x1) U33_gaa(x0, x1) U34_gaa(x0, x1) predcB_in_gg(x0, x1) U35_gaa(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (140) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule FE_IN_G(s(s(X1))) -> U13_G(X1, predcC_in_ga(X1)) at position [1] we obtained the following new rules [LPAR04]: (FE_IN_G(s(s(X1))) -> U13_G(X1, U24_ga(X1, predcA_in_ga(X1))),FE_IN_G(s(s(X1))) -> U13_G(X1, U24_ga(X1, predcA_in_ga(X1)))) ---------------------------------------- (141) Obligation: Q DP problem: The TRS P consists of the following rules: U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2)) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) FE_IN_G(s(s(X1))) -> U13_G(X1, U24_ga(X1, predcA_in_ga(X1))) The TRS R consists of the following rules: predcC_in_ga(X1) -> U24_ga(X1, predcA_in_ga(X1)) predcB_in_ga(0) -> predcB_out_ga(0, 0) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) halfcD_in_ga(0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1))) -> U25_ga(X1, predcC_in_ga(X1)) doublecF_in_ga(X1) -> U36_ga(X1, qcG_in_gaa(X1)) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) U25_ga(X1, predcC_out_ga(X1, X3)) -> U26_ga(X1, predcB_in_ga(X3)) U36_ga(X1, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U26_ga(X1, predcB_out_ga(X3, X4)) -> U27_ga(X1, halfcD_in_ga(X4)) qcG_in_gaa(X1) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) qcG_in_gaa(X1) -> U34_gaa(X1, predcB_in_ga(s(X1))) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U27_ga(X1, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) U34_gaa(X1, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, qcG_in_gaa(X2)) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) U35_gaa(X1, X2, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) The set Q consists of the following terms: predcC_in_ga(x0) predcB_in_ga(x0) halfcD_in_ga(x0) doublecF_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) U25_ga(x0, x1) U36_ga(x0, x1) predcA_in_ga(x0) U26_ga(x0, x1) qcG_in_gaa(x0) U22_ga(x0, x1) U27_ga(x0, x1) U33_gaa(x0, x1) U34_gaa(x0, x1) predcB_in_gg(x0, x1) U35_gaa(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (142) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented rules of the TRS R: predcB_in_ga(0) -> predcB_out_ga(0, 0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 2 POL(FE_IN_G(x_1)) = 0 POL(U13_G(x_1, x_2)) = 2*x_2 POL(U15_G(x_1, x_2)) = 2*x_2 POL(U17_G(x_1, x_2)) = 2*x_2 POL(U19_G(x_1, x_2)) = x_2 POL(U22_ga(x_1, x_2)) = 0 POL(U23_ga(x_1, x_2)) = 2*x_2 POL(U24_ga(x_1, x_2)) = 0 POL(U25_ga(x_1, x_2)) = x_2 POL(U26_ga(x_1, x_2)) = x_2 POL(U27_ga(x_1, x_2)) = x_2 POL(U33_gaa(x_1, x_2)) = 0 POL(U34_gaa(x_1, x_2)) = 2*x_2 POL(U35_gaa(x_1, x_2, x_3)) = x_3 POL(U36_ga(x_1, x_2)) = x_2 POL(doublecF_in_ga(x_1)) = 0 POL(doublecF_out_ga(x_1, x_2)) = 0 POL(halfcD_in_ga(x_1)) = 0 POL(halfcD_out_ga(x_1, x_2)) = 0 POL(predcA_in_ga(x_1)) = 0 POL(predcA_out_ga(x_1, x_2)) = 0 POL(predcB_in_ga(x_1)) = x_1 POL(predcB_in_gg(x_1, x_2)) = 0 POL(predcB_out_ga(x_1, x_2)) = 0 POL(predcB_out_gg(x_1, x_2)) = 0 POL(predcC_in_ga(x_1)) = 0 POL(predcC_out_ga(x_1, x_2)) = x_2 POL(qcG_in_gaa(x_1)) = 0 POL(qcG_out_gaa(x_1, x_2, x_3)) = 0 POL(s(x_1)) = 0 ---------------------------------------- (143) Obligation: Q DP problem: The TRS P consists of the following rules: U13_G(X1, predcC_out_ga(X1, X2)) -> U15_G(X1, predcB_in_ga(X2)) U15_G(X1, predcB_out_ga(X2, X3)) -> U17_G(X1, halfcD_in_ga(X3)) U17_G(X1, halfcD_out_ga(X3, X4)) -> U19_G(X1, doublecF_in_ga(X4)) U19_G(X1, doublecF_out_ga(X4, X5)) -> FE_IN_G(X5) FE_IN_G(s(s(X1))) -> U13_G(X1, U24_ga(X1, predcA_in_ga(X1))) The TRS R consists of the following rules: predcC_in_ga(X1) -> U24_ga(X1, predcA_in_ga(X1)) predcB_in_ga(s(0)) -> predcB_out_ga(s(0), 0) predcB_in_ga(s(s(X1))) -> U23_ga(X1, predcB_in_ga(s(X1))) halfcD_in_ga(0) -> halfcD_out_ga(0, 0) halfcD_in_ga(s(s(X1))) -> U25_ga(X1, predcC_in_ga(X1)) doublecF_in_ga(X1) -> U36_ga(X1, qcG_in_gaa(X1)) U24_ga(X1, predcA_out_ga(X1, X2)) -> predcC_out_ga(X1, s(X2)) U23_ga(X1, predcB_out_ga(s(X1), X2)) -> predcB_out_ga(s(s(X1)), s(X2)) U25_ga(X1, predcC_out_ga(X1, X3)) -> U26_ga(X1, predcB_in_ga(X3)) U36_ga(X1, qcG_out_gaa(X1, X3, X2)) -> doublecF_out_ga(X1, s(s(X2))) predcA_in_ga(0) -> predcA_out_ga(0, 0) predcA_in_ga(s(X1)) -> U22_ga(X1, predcA_in_ga(X1)) U26_ga(X1, predcB_out_ga(X3, X4)) -> U27_ga(X1, halfcD_in_ga(X4)) qcG_in_gaa(X1) -> U33_gaa(X1, predcB_in_gg(s(X1), 0)) qcG_in_gaa(X1) -> U34_gaa(X1, predcB_in_ga(s(X1))) U22_ga(X1, predcA_out_ga(X1, X2)) -> predcA_out_ga(s(X1), s(X2)) U27_ga(X1, halfcD_out_ga(X4, X2)) -> halfcD_out_ga(s(s(X1)), s(X2)) U33_gaa(X1, predcB_out_gg(s(X1), 0)) -> qcG_out_gaa(X1, 0, 0) U34_gaa(X1, predcB_out_ga(s(X1), s(X2))) -> U35_gaa(X1, X2, qcG_in_gaa(X2)) predcB_in_gg(s(0), 0) -> predcB_out_gg(s(0), 0) U35_gaa(X1, X2, qcG_out_gaa(X2, X4, X3)) -> qcG_out_gaa(X1, s(X2), s(s(X3))) The set Q consists of the following terms: predcC_in_ga(x0) predcB_in_ga(x0) halfcD_in_ga(x0) doublecF_in_ga(x0) U24_ga(x0, x1) U23_ga(x0, x1) U25_ga(x0, x1) U36_ga(x0, x1) predcA_in_ga(x0) U26_ga(x0, x1) qcG_in_gaa(x0) U22_ga(x0, x1) U27_ga(x0, x1) U33_gaa(x0, x1) U34_gaa(x0, x1) predcB_in_gg(x0, x1) U35_gaa(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (144) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 2, "program": { "directives": [], "clauses": [ [ "(pred (0) (0))", null ], [ "(pred (s (0)) (0))", null ], [ "(pred (s (s X)) (s Y))", "(pred (s X) Y)" ], [ "(double (0) (0))", null ], [ "(double (s X) (s (s Y)))", "(',' (pred (s X) Z) (double Z Y))" ], [ "(half (0) (0))", null ], [ "(half (s (s X)) (s U))", "(',' (pred (s (s X)) Y) (',' (pred Y Z) (half Z U)))" ], [ "(f (s X))", "(',' (half (s X) Y) (',' (double Y Z) (f Z)))" ] ] }, "graph": { "nodes": { "390": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "391": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "392": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "393": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T19) X47)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": ["X47"], "exprvars": [] } }, "394": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "395": { "goal": [ { "clause": 5, "scope": 6, "term": "(half T16 X20)" }, { "clause": 6, "scope": 6, "term": "(half T16 X20)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "396": { "goal": [{ "clause": 5, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "397": { "goal": [{ "clause": 6, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "398": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "399": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "57": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "4": { "goal": [{ "clause": 7, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "400": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "401": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s (s T22)) X58) (',' (pred X58 X59) (half X59 X60)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T22"], "free": [ "X60", "X58", "X59" ], "exprvars": [] } }, "369": { "goal": [ { "clause": 0, "scope": 4, "term": "(pred (s T12) X29)" }, { "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }, { "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "402": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "7": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (half (s T4) X6) (',' (double X6 X7) (f X7)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": [ "X6", "X7" ], "exprvars": [] } }, "403": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "8": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "404": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T23"], "free": [], "exprvars": [] } }, "405": { "goal": [ { "clause": 3, "scope": 7, "term": "(double T5 X7)" }, { "clause": 4, "scope": 7, "term": "(double T5 X7)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "406": { "goal": [{ "clause": 3, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "407": { "goal": [{ "clause": 4, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "408": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "409": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "29": { "goal": [{ "clause": -1, "scope": -1, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "370": { "goal": [ { "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }, { "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "371": { "goal": [{ "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "372": { "goal": [{ "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "373": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "376": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "377": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "410": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "378": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T15) X38)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T15"], "free": ["X38"], "exprvars": [] } }, "379": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "30": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (double T5 X7) (f X7))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "33": { "goal": [ { "clause": 5, "scope": 2, "term": "(half (s T4) X6)" }, { "clause": 6, "scope": 2, "term": "(half (s T4) X6)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "34": { "goal": [{ "clause": 6, "scope": 2, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "35": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s (s T8)) X18) (',' (pred X18 X19) (half X19 X20)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": [ "X20", "X18", "X19" ], "exprvars": [] } }, "36": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "37": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "38": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred T9 X19) (half X19 X20))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": [ "X20", "X19" ], "exprvars": [] } }, "39": { "goal": [ { "clause": 0, "scope": 3, "term": "(pred (s (s T8)) X18)" }, { "clause": 1, "scope": 3, "term": "(pred (s (s T8)) X18)" }, { "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "380": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "381": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "382": { "goal": [ { "clause": 0, "scope": 5, "term": "(pred T9 X19)" }, { "clause": 1, "scope": 5, "term": "(pred T9 X19)" }, { "clause": 2, "scope": 5, "term": "(pred T9 X19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "383": { "goal": [{ "clause": 0, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "384": { "goal": [ { "clause": 1, "scope": 5, "term": "(pred T9 X19)" }, { "clause": 2, "scope": 5, "term": "(pred T9 X19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "461": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s T26) X70) (double X70 X71))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T26"], "free": [ "X71", "X70" ], "exprvars": [] } }, "385": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "462": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "386": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "463": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T26) X70)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T26"], "free": ["X70"], "exprvars": [] } }, "387": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "464": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T27 X71)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": ["X71"], "exprvars": [] } }, "388": { "goal": [{ "clause": 1, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "389": { "goal": [{ "clause": 2, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "40": { "goal": [ { "clause": 1, "scope": 3, "term": "(pred (s (s T8)) X18)" }, { "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "43": { "goal": [{ "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 4, "label": "CASE" }, { "from": 4, "to": 7, "label": "EVAL with clause\nf(s(X5)) :- ','(half(s(X5), X6), ','(double(X6, X7), f(X7))).\nand substitutionX5 -> T4,\nT1 -> s(T4)" }, { "from": 4, "to": 8, "label": "EVAL-BACKTRACK" }, { "from": 7, "to": 29, "label": "SPLIT 1" }, { "from": 7, "to": 30, "label": "SPLIT 2\nnew knowledge:\nT4 is ground\nT5 is ground\nreplacements:X6 -> T5" }, { "from": 29, "to": 33, "label": "CASE" }, { "from": 30, "to": 403, "label": "SPLIT 1" }, { "from": 30, "to": 404, "label": "SPLIT 2\nnew knowledge:\nT5 is ground\nT23 is ground\nreplacements:X7 -> T23" }, { "from": 33, "to": 34, "label": "BACKTRACK\nfor clause: half(0, 0)because of non-unification" }, { "from": 34, "to": 35, "label": "EVAL with clause\nhalf(s(s(X16)), s(X17)) :- ','(pred(s(s(X16)), X18), ','(pred(X18, X19), half(X19, X17))).\nand substitutionX16 -> T8,\nT4 -> s(T8),\nX17 -> X20,\nX6 -> s(X20)" }, { "from": 34, "to": 36, "label": "EVAL-BACKTRACK" }, { "from": 35, "to": 37, "label": "SPLIT 1" }, { "from": 35, "to": 38, "label": "SPLIT 2\nnew knowledge:\nT8 is ground\nT9 is ground\nreplacements:X18 -> T9" }, { "from": 37, "to": 39, "label": "CASE" }, { "from": 38, "to": 380, "label": "SPLIT 1" }, { "from": 38, "to": 381, "label": "SPLIT 2\nnew knowledge:\nT9 is ground\nT16 is ground\nreplacements:X19 -> T16" }, { "from": 39, "to": 40, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 40, "to": 43, "label": "BACKTRACK\nfor clause: pred(s(0), 0)because of non-unification" }, { "from": 43, "to": 57, "label": "ONLY EVAL with clause\npred(s(s(X27)), s(X28)) :- pred(s(X27), X28).\nand substitutionT8 -> T12,\nX27 -> T12,\nX28 -> X29,\nX18 -> s(X29)" }, { "from": 57, "to": 369, "label": "CASE" }, { "from": 369, "to": 370, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 370, "to": 371, "label": "PARALLEL" }, { "from": 370, "to": 372, "label": "PARALLEL" }, { "from": 371, "to": 373, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT12 -> 0,\nX29 -> 0" }, { "from": 371, "to": 376, "label": "EVAL-BACKTRACK" }, { "from": 372, "to": 378, "label": "EVAL with clause\npred(s(s(X36)), s(X37)) :- pred(s(X36), X37).\nand substitutionX36 -> T15,\nT12 -> s(T15),\nX37 -> X38,\nX29 -> s(X38)" }, { "from": 372, "to": 379, "label": "EVAL-BACKTRACK" }, { "from": 373, "to": 377, "label": "SUCCESS" }, { "from": 378, "to": 57, "label": "INSTANCE with matching:\nT12 -> T15\nX29 -> X38" }, { "from": 380, "to": 382, "label": "CASE" }, { "from": 381, "to": 395, "label": "CASE" }, { "from": 382, "to": 383, "label": "PARALLEL" }, { "from": 382, "to": 384, "label": "PARALLEL" }, { "from": 383, "to": 385, "label": "EVAL with clause\npred(0, 0).\nand substitutionT9 -> 0,\nX19 -> 0" }, { "from": 383, "to": 386, "label": "EVAL-BACKTRACK" }, { "from": 384, "to": 388, "label": "PARALLEL" }, { "from": 384, "to": 389, "label": "PARALLEL" }, { "from": 385, "to": 387, "label": "SUCCESS" }, { "from": 388, "to": 390, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT9 -> s(0),\nX19 -> 0" }, { "from": 388, "to": 391, "label": "EVAL-BACKTRACK" }, { "from": 389, "to": 393, "label": "EVAL with clause\npred(s(s(X45)), s(X46)) :- pred(s(X45), X46).\nand substitutionX45 -> T19,\nT9 -> s(s(T19)),\nX46 -> X47,\nX19 -> s(X47)" }, { "from": 389, "to": 394, "label": "EVAL-BACKTRACK" }, { "from": 390, "to": 392, "label": "SUCCESS" }, { "from": 393, "to": 380, "label": "INSTANCE with matching:\nT9 -> s(T19)\nX19 -> X47" }, { "from": 395, "to": 396, "label": "PARALLEL" }, { "from": 395, "to": 397, "label": "PARALLEL" }, { "from": 396, "to": 398, "label": "EVAL with clause\nhalf(0, 0).\nand substitutionT16 -> 0,\nX20 -> 0" }, { "from": 396, "to": 399, "label": "EVAL-BACKTRACK" }, { "from": 397, "to": 401, "label": "EVAL with clause\nhalf(s(s(X56)), s(X57)) :- ','(pred(s(s(X56)), X58), ','(pred(X58, X59), half(X59, X57))).\nand substitutionX56 -> T22,\nT16 -> s(s(T22)),\nX57 -> X60,\nX20 -> s(X60)" }, { "from": 397, "to": 402, "label": "EVAL-BACKTRACK" }, { "from": 398, "to": 400, "label": "SUCCESS" }, { "from": 401, "to": 35, "label": "INSTANCE with matching:\nT8 -> T22\nX18 -> X58\nX19 -> X59\nX20 -> X60" }, { "from": 403, "to": 405, "label": "CASE" }, { "from": 404, "to": 2, "label": "INSTANCE with matching:\nT1 -> T23" }, { "from": 405, "to": 406, "label": "PARALLEL" }, { "from": 405, "to": 407, "label": "PARALLEL" }, { "from": 406, "to": 408, "label": "EVAL with clause\ndouble(0, 0).\nand substitutionT5 -> 0,\nX7 -> 0" }, { "from": 406, "to": 409, "label": "EVAL-BACKTRACK" }, { "from": 407, "to": 461, "label": "EVAL with clause\ndouble(s(X68), s(s(X69))) :- ','(pred(s(X68), X70), double(X70, X69)).\nand substitutionX68 -> T26,\nT5 -> s(T26),\nX69 -> X71,\nX7 -> s(s(X71))" }, { "from": 407, "to": 462, "label": "EVAL-BACKTRACK" }, { "from": 408, "to": 410, "label": "SUCCESS" }, { "from": 461, "to": 463, "label": "SPLIT 1" }, { "from": 461, "to": 464, "label": "SPLIT 2\nnew knowledge:\nT26 is ground\nT27 is ground\nreplacements:X70 -> T27" }, { "from": 463, "to": 380, "label": "INSTANCE with matching:\nT9 -> s(T26)\nX19 -> X70" }, { "from": 464, "to": 403, "label": "INSTANCE with matching:\nT5 -> T27\nX7 -> X71" } ], "type": "Graph" } } ---------------------------------------- (145) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) Q is empty. ---------------------------------------- (146) Overlay + Local Confluence (EQUIVALENT) The TRS is overlay and locally confluent. By [NOC] we can switch to innermost. ---------------------------------------- (147) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) ---------------------------------------- (148) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (149) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN(s(T4)) -> U1^1(f7_in(T4), s(T4)) F2_IN(s(T4)) -> F7_IN(T4) F57_IN(s(T15)) -> U2^1(f57_in(T15), s(T15)) F57_IN(s(T15)) -> F57_IN(T15) F380_IN(s(s(T19))) -> U3^1(f380_in(s(T19)), s(s(T19))) F380_IN(s(s(T19))) -> F380_IN(s(T19)) F403_IN(s(T26)) -> U4^1(f461_in(T26), s(T26)) F403_IN(s(T26)) -> F461_IN(T26) F29_IN(s(T8)) -> U5^1(f35_in(T8), s(T8)) F29_IN(s(T8)) -> F35_IN(T8) F37_IN(T12) -> U6^1(f57_in(T12), T12) F37_IN(T12) -> F57_IN(T12) F381_IN(s(s(T22))) -> U7^1(f35_in(T22), s(s(T22))) F381_IN(s(s(T22))) -> F35_IN(T22) F7_IN(T4) -> U8^1(f29_in(T4), T4) F7_IN(T4) -> F29_IN(T4) U8^1(f29_out1(T5), T4) -> U9^1(f30_in(T5), T4, T5) U8^1(f29_out1(T5), T4) -> F30_IN(T5) F30_IN(T5) -> U10^1(f403_in(T5), T5) F30_IN(T5) -> F403_IN(T5) U10^1(f403_out1(T23), T5) -> U11^1(f2_in(T23), T5, T23) U10^1(f403_out1(T23), T5) -> F2_IN(T23) F35_IN(T8) -> U12^1(f37_in(T8), T8) F35_IN(T8) -> F37_IN(T8) U12^1(f37_out1(T9), T8) -> U13^1(f38_in(T9), T8, T9) U12^1(f37_out1(T9), T8) -> F38_IN(T9) F38_IN(T9) -> U14^1(f380_in(T9), T9) F38_IN(T9) -> F380_IN(T9) U14^1(f380_out1(T16), T9) -> U15^1(f381_in(T16), T9, T16) U14^1(f380_out1(T16), T9) -> F381_IN(T16) F461_IN(T26) -> U16^1(f380_in(s(T26)), T26) F461_IN(T26) -> F380_IN(s(T26)) U16^1(f380_out1(T27), T26) -> U17^1(f403_in(T27), T26, T27) U16^1(f380_out1(T27), T26) -> F403_IN(T27) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (150) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 5 SCCs with 19 less nodes. ---------------------------------------- (151) Complex Obligation (AND) ---------------------------------------- (152) Obligation: Q DP problem: The TRS P consists of the following rules: F380_IN(s(s(T19))) -> F380_IN(s(T19)) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (153) 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. ---------------------------------------- (154) Obligation: Q DP problem: The TRS P consists of the following rules: F380_IN(s(s(T19))) -> F380_IN(s(T19)) R is empty. The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (155) 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]. f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) ---------------------------------------- (156) Obligation: Q DP problem: The TRS P consists of the following rules: F380_IN(s(s(T19))) -> F380_IN(s(T19)) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (157) 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: *F380_IN(s(s(T19))) -> F380_IN(s(T19)) The graph contains the following edges 1 > 1 ---------------------------------------- (158) YES ---------------------------------------- (159) Obligation: Q DP problem: The TRS P consists of the following rules: F461_IN(T26) -> U16^1(f380_in(s(T26)), T26) U16^1(f380_out1(T27), T26) -> F403_IN(T27) F403_IN(s(T26)) -> F461_IN(T26) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (160) 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. ---------------------------------------- (161) Obligation: Q DP problem: The TRS P consists of the following rules: F461_IN(T26) -> U16^1(f380_in(s(T26)), T26) U16^1(f380_out1(T27), T26) -> F403_IN(T27) F403_IN(s(T26)) -> F461_IN(T26) The TRS R consists of the following rules: f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (162) 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]. f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) ---------------------------------------- (163) Obligation: Q DP problem: The TRS P consists of the following rules: F461_IN(T26) -> U16^1(f380_in(s(T26)), T26) U16^1(f380_out1(T27), T26) -> F403_IN(T27) F403_IN(s(T26)) -> F461_IN(T26) The TRS R consists of the following rules: f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) The set Q consists of the following terms: f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (164) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U16^1(f380_out1(T27), T26) -> F403_IN(T27) The remaining pairs can at least be oriented weakly. Used ordering: Combined order from the following AFS and order. F461_IN(x1) = F461_IN(x1) U16^1(x1, x2) = x1 f380_in(x1) = x1 s(x1) = s(x1) f380_out1(x1) = f380_out1(x1) F403_IN(x1) = x1 0 = 0 U3(x1, x2) = U3(x1) Recursive path order with status [RPO]. Quasi-Precedence: 0 > [F461_IN_1, s_1, f380_out1_1, U3_1] Status: F461_IN_1: [1] s_1: [1] f380_out1_1: [1] 0: multiset status U3_1: [1] The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) ---------------------------------------- (165) Obligation: Q DP problem: The TRS P consists of the following rules: F461_IN(T26) -> U16^1(f380_in(s(T26)), T26) F403_IN(s(T26)) -> F461_IN(T26) The TRS R consists of the following rules: f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) The set Q consists of the following terms: f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (166) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes. ---------------------------------------- (167) TRUE ---------------------------------------- (168) Obligation: Q DP problem: The TRS P consists of the following rules: F57_IN(s(T15)) -> F57_IN(T15) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (169) 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. ---------------------------------------- (170) Obligation: Q DP problem: The TRS P consists of the following rules: F57_IN(s(T15)) -> F57_IN(T15) R is empty. The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (171) 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]. f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) ---------------------------------------- (172) Obligation: Q DP problem: The TRS P consists of the following rules: F57_IN(s(T15)) -> F57_IN(T15) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (173) 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: *F57_IN(s(T15)) -> F57_IN(T15) The graph contains the following edges 1 > 1 ---------------------------------------- (174) YES ---------------------------------------- (175) Obligation: Q DP problem: The TRS P consists of the following rules: F35_IN(T8) -> U12^1(f37_in(T8), T8) U12^1(f37_out1(T9), T8) -> F38_IN(T9) F38_IN(T9) -> U14^1(f380_in(T9), T9) U14^1(f380_out1(T16), T9) -> F381_IN(T16) F381_IN(s(s(T22))) -> F35_IN(T22) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (176) 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. ---------------------------------------- (177) Obligation: Q DP problem: The TRS P consists of the following rules: F35_IN(T8) -> U12^1(f37_in(T8), T8) U12^1(f37_out1(T9), T8) -> F38_IN(T9) F38_IN(T9) -> U14^1(f380_in(T9), T9) U14^1(f380_out1(T16), T9) -> F381_IN(T16) F381_IN(s(s(T22))) -> F35_IN(T22) The TRS R consists of the following rules: f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f37_in(T12) -> U6(f57_in(T12), T12) f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (178) 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]. f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) ---------------------------------------- (179) Obligation: Q DP problem: The TRS P consists of the following rules: F35_IN(T8) -> U12^1(f37_in(T8), T8) U12^1(f37_out1(T9), T8) -> F38_IN(T9) F38_IN(T9) -> U14^1(f380_in(T9), T9) U14^1(f380_out1(T16), T9) -> F381_IN(T16) F381_IN(s(s(T22))) -> F35_IN(T22) The TRS R consists of the following rules: f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f37_in(T12) -> U6(f57_in(T12), T12) f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) The set Q consists of the following terms: f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f37_in(x0) U6(f57_out1(x0), x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (180) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. F381_IN(s(s(T22))) -> F35_IN(T22) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U12^1_2(x_1, x_2) ) = 2x_1 POL( f37_in_1(x_1) ) = x_1 + 1 POL( U6_2(x_1, x_2) ) = x_1 + 1 POL( f57_in_1(x_1) ) = x_1 POL( U14^1_2(x_1, x_2) ) = 2x_1 POL( f380_in_1(x_1) ) = x_1 POL( 0 ) = 0 POL( f380_out1_1(x_1) ) = x_1 POL( s_1(x_1) ) = x_1 + 1 POL( U3_2(x_1, x_2) ) = x_1 + 1 POL( f57_out1_1(x_1) ) = x_1 POL( U2_2(x_1, x_2) ) = x_1 + 1 POL( f37_out1_1(x_1) ) = x_1 POL( F35_IN_1(x_1) ) = 2x_1 + 2 POL( F38_IN_1(x_1) ) = 2x_1 POL( F381_IN_1(x_1) ) = 2x_1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: f37_in(T12) -> U6(f57_in(T12), T12) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) ---------------------------------------- (181) Obligation: Q DP problem: The TRS P consists of the following rules: F35_IN(T8) -> U12^1(f37_in(T8), T8) U12^1(f37_out1(T9), T8) -> F38_IN(T9) F38_IN(T9) -> U14^1(f380_in(T9), T9) U14^1(f380_out1(T16), T9) -> F381_IN(T16) The TRS R consists of the following rules: f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f37_in(T12) -> U6(f57_in(T12), T12) f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) The set Q consists of the following terms: f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f37_in(x0) U6(f57_out1(x0), x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (182) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes. ---------------------------------------- (183) TRUE ---------------------------------------- (184) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN(s(T4)) -> F7_IN(T4) F7_IN(T4) -> U8^1(f29_in(T4), T4) U8^1(f29_out1(T5), T4) -> F30_IN(T5) F30_IN(T5) -> U10^1(f403_in(T5), T5) U10^1(f403_out1(T23), T5) -> F2_IN(T23) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) The set Q consists of the following terms: f2_in(s(x0)) U1(f7_out1(x0, x1), s(x2)) f57_in(0) f57_in(s(x0)) U2(f57_out1(x0), s(x1)) f380_in(0) f380_in(s(0)) f380_in(s(s(x0))) U3(f380_out1(x0), s(s(x1))) f403_in(0) f403_in(s(x0)) U4(f461_out1(x0, x1), s(x2)) f29_in(s(x0)) U5(f35_out1(x0, x1, x2), s(x3)) f37_in(x0) U6(f57_out1(x0), x1) f381_in(0) f381_in(s(s(x0))) U7(f35_out1(x0, x1, x2), s(s(x3))) f7_in(x0) U8(f29_out1(x0), x1) U9(f30_out1(x0), x1, x2) f30_in(x0) U10(f403_out1(x0), x1) U11(f2_out1, x0, x1) f35_in(x0) U12(f37_out1(x0), x1) U13(f38_out1(x0, x1), x2, x3) f38_in(x0) U14(f380_out1(x0), x1) U15(f381_out1(x0), x1, x2) f461_in(x0) U16(f380_out1(x0), x1) U17(f403_out1(x0), x1, x2) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (185) MNOCProof (EQUIVALENT) We use the modular non-overlap check [FROCOS05] to decrease Q to the empty set. ---------------------------------------- (186) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN(s(T4)) -> F7_IN(T4) F7_IN(T4) -> U8^1(f29_in(T4), T4) U8^1(f29_out1(T5), T4) -> F30_IN(T5) F30_IN(T5) -> U10^1(f403_in(T5), T5) U10^1(f403_out1(T23), T5) -> F2_IN(T23) The TRS R consists of the following rules: f2_in(s(T4)) -> U1(f7_in(T4), s(T4)) U1(f7_out1(X6, X7), s(T4)) -> f2_out1 f57_in(0) -> f57_out1(0) f57_in(s(T15)) -> U2(f57_in(T15), s(T15)) U2(f57_out1(X38), s(T15)) -> f57_out1(s(X38)) f380_in(0) -> f380_out1(0) f380_in(s(0)) -> f380_out1(0) f380_in(s(s(T19))) -> U3(f380_in(s(T19)), s(s(T19))) U3(f380_out1(X47), s(s(T19))) -> f380_out1(s(X47)) f403_in(0) -> f403_out1(0) f403_in(s(T26)) -> U4(f461_in(T26), s(T26)) U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))) f29_in(s(T8)) -> U5(f35_in(T8), s(T8)) U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)) f37_in(T12) -> U6(f57_in(T12), T12) U6(f57_out1(X29), T12) -> f37_out1(s(X29)) f381_in(0) -> f381_out1(0) f381_in(s(s(T22))) -> U7(f35_in(T22), s(s(T22))) U7(f35_out1(X58, X59, X60), s(s(T22))) -> f381_out1(s(X60)) f7_in(T4) -> U8(f29_in(T4), T4) U8(f29_out1(T5), T4) -> U9(f30_in(T5), T4, T5) U9(f30_out1(X7), T4, T5) -> f7_out1(T5, X7) f30_in(T5) -> U10(f403_in(T5), T5) U10(f403_out1(T23), T5) -> U11(f2_in(T23), T5, T23) U11(f2_out1, T5, T23) -> f30_out1(T23) f35_in(T8) -> U12(f37_in(T8), T8) U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9) U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20) f38_in(T9) -> U14(f380_in(T9), T9) U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16) U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20) f461_in(T26) -> U16(f380_in(s(T26)), T26) U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27) U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71) Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (187) NonLoopProof (COMPLETE) By Theorem 8 [NONLOOP] we deduce infiniteness of the QDP. We apply the theorem with m = 1, b = 0, σ' = [ ], and μ' = [x0 / s(0)] on the rule U10^1(f403_out1(s(s(0))), s(0))[ ]^n[ ] -> U10^1(f403_out1(s(s(0))), s(0))[ ]^n[x0 / s(0)] This rule is correct for the QDP as the following derivation shows: U10^1(f403_out1(s(s(0))), s(0))[ ]^n[ ] -> U10^1(f403_out1(s(s(0))), s(0))[ ]^n[x0 / s(0)] by Equivalency by Simplifying Mu with mu1: [x0 / s(0)] mu2: [ ] intermediate steps: Instantiate mu U10^1(f403_out1(s(s(0))), x0)[ ]^n[ ] -> U10^1(f403_out1(s(s(0))), s(0))[ ]^n[ ] by Rewrite t with the rewrite sequence : [([0],f403_in(s(T26)) -> U4(f461_in(T26), s(T26))), ([0,0],f461_in(T26) -> U16(f380_in(s(T26)), T26)), ([0,0,0],f380_in(s(0)) -> f380_out1(0)), ([0,0],U16(f380_out1(T27), T26) -> U17(f403_in(T27), T26, T27)), ([0,0,0],f403_in(0) -> f403_out1(0)), ([0,0],U17(f403_out1(X71), T26, T27) -> f461_out1(T27, X71)), ([0],U4(f461_out1(X70, X71), s(T26)) -> f403_out1(s(s(X71))))] U10^1(f403_out1(s(s(0))), x0)[ ]^n[ ] -> U10^1(f403_in(s(0)), s(0))[ ]^n[ ] by Narrowing at position: [] U10^1(f403_out1(s(s(0))), x0)[ ]^n[ ] -> F30_IN(s(0))[ ]^n[ ] by Narrowing at position: [] U10^1(f403_out1(s(s(0))), x0)[ ]^n[ ] -> U8^1(f29_out1(s(0)), s(0))[ ]^n[ ] by Rewrite t with the rewrite sequence : [([0,0,0],U6(f57_out1(X29), T12) -> f37_out1(s(X29))), ([0,0],U12(f37_out1(T9), T8) -> U13(f38_in(T9), T8, T9)), ([0,0,0],f38_in(T9) -> U14(f380_in(T9), T9)), ([0,0,0,0],f380_in(s(0)) -> f380_out1(0)), ([0,0,0],U14(f380_out1(T16), T9) -> U15(f381_in(T16), T9, T16)), ([0,0,0,0],f381_in(0) -> f381_out1(0)), ([0,0,0],U15(f381_out1(X20), T9, T16) -> f38_out1(T16, X20)), ([0,0],U13(f38_out1(X19, X20), T8, T9) -> f35_out1(T9, X19, X20)), ([0],U5(f35_out1(X18, X19, X20), s(T8)) -> f29_out1(s(X20)))] U10^1(f403_out1(s(s(0))), x0)[ ]^n[ ] -> U8^1(U5(U12(U6(f57_out1(0), 0), 0), s(0)), s(0))[ ]^n[ ] by Narrowing at position: [0,0,0,0] intermediate steps: Instantiation - Instantiation U10^1(f403_out1(s(s(y0))), x0)[ ]^n[ ] -> U8^1(U5(U12(U6(f57_in(y0), y0), y0), s(y0)), s(y0))[ ]^n[ ] by Rewrite t with the rewrite sequence : [([0,0],f35_in(T8) -> U12(f37_in(T8), T8)), ([0,0,0],f37_in(T12) -> U6(f57_in(T12), T12))] U10^1(f403_out1(s(s(y0))), x0)[ ]^n[ ] -> U8^1(U5(f35_in(y0), s(y0)), s(y0))[ ]^n[ ] by Narrowing at position: [] intermediate steps: Instantiation - Instantiation U10^1(f403_out1(T23), T5)[ ]^n[ ] -> F2_IN(T23)[ ]^n[ ] by Rule from TRS P F2_IN(s(s(y0)))[ ]^n[ ] -> U8^1(U5(f35_in(y0), s(y0)), s(y0))[ ]^n[ ] by Narrowing at position: [0] intermediate steps: Instantiation F2_IN(s(x0))[ ]^n[ ] -> U8^1(f29_in(x0), x0)[ ]^n[ ] by Narrowing at position: [] intermediate steps: Instantiation F2_IN(s(T4))[ ]^n[ ] -> F7_IN(T4)[ ]^n[ ] by Rule from TRS P intermediate steps: Instantiation - Instantiation F7_IN(T4)[ ]^n[ ] -> U8^1(f29_in(T4), T4)[ ]^n[ ] by Rule from TRS P intermediate steps: Instantiation f29_in(s(T8))[ ]^n[ ] -> U5(f35_in(T8), s(T8))[ ]^n[ ] by Rule from TRS R f57_in(0)[ ]^n[ ] -> f57_out1(0)[ ]^n[ ] by Rule from TRS R intermediate steps: Instantiation - Instantiation - Instantiation - Instantiation U8^1(f29_out1(T5), T4)[ ]^n[ ] -> F30_IN(T5)[ ]^n[ ] by Rule from TRS P intermediate steps: Instantiation - Instantiation F30_IN(T5)[ ]^n[ ] -> U10^1(f403_in(T5), T5)[ ]^n[ ] by Rule from TRS P ---------------------------------------- (188) NO ---------------------------------------- (189) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 3, "program": { "directives": [], "clauses": [ [ "(pred (0) (0))", null ], [ "(pred (s (0)) (0))", null ], [ "(pred (s (s X)) (s Y))", "(pred (s X) Y)" ], [ "(double (0) (0))", null ], [ "(double (s X) (s (s Y)))", "(',' (pred (s X) Z) (double Z Y))" ], [ "(half (0) (0))", null ], [ "(half (s (s X)) (s U))", "(',' (pred (s (s X)) Y) (',' (pred Y Z) (half Z U)))" ], [ "(f (s X))", "(',' (half (s X) Y) (',' (double Y Z) (f Z)))" ] ] }, "graph": { "nodes": { "type": "Nodes", "271": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T15) X38)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T15"], "free": ["X38"], "exprvars": [] } }, "272": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "276": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "278": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "355": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s T26) X70) (double X70 X71))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T26"], "free": [ "X71", "X70" ], "exprvars": [] } }, "356": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "314": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T19) X47)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": ["X47"], "exprvars": [] } }, "316": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "10": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "98": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s (s T8)) X18) (',' (pred X18 X19) (half X19 X20)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": [ "X20", "X18", "X19" ], "exprvars": [] } }, "283": { "goal": [ { "clause": 0, "scope": 5, "term": "(pred T9 X19)" }, { "clause": 1, "scope": 5, "term": "(pred T9 X19)" }, { "clause": 2, "scope": 5, "term": "(pred T9 X19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "285": { "goal": [{ "clause": 0, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "287": { "goal": [ { "clause": 1, "scope": 5, "term": "(pred T9 X19)" }, { "clause": 2, "scope": 5, "term": "(pred T9 X19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "3": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "322": { "goal": [ { "clause": 5, "scope": 6, "term": "(half T16 X20)" }, { "clause": 6, "scope": 6, "term": "(half T16 X20)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "323": { "goal": [{ "clause": 5, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "324": { "goal": [{ "clause": 6, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "6": { "goal": [{ "clause": 7, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "325": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "326": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "327": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "9": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (half (s T4) X6) (',' (double X6 X7) (f X7)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": [ "X6", "X7" ], "exprvars": [] } }, "328": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred (s (s T22)) X58) (',' (pred X58 X59) (half X59 X60)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T22"], "free": [ "X60", "X58", "X59" ], "exprvars": [] } }, "329": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "63": { "goal": [ { "clause": 5, "scope": 2, "term": "(half (s T4) X6)" }, { "clause": 6, "scope": 2, "term": "(half (s T4) X6)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "64": { "goal": [{ "clause": 6, "scope": 2, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "291": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "293": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "295": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "330": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "374": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T26) X70)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T26"], "free": ["X70"], "exprvars": [] } }, "133": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "298": { "goal": [{ "clause": 1, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "331": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T23"], "free": [], "exprvars": [] } }, "375": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T27 X71)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": ["X71"], "exprvars": [] } }, "134": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (pred T9 X19) (half X19 X20))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": [ "X20", "X19" ], "exprvars": [] } }, "299": { "goal": [{ "clause": 2, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "332": { "goal": [ { "clause": 3, "scope": 7, "term": "(double T5 X7)" }, { "clause": 4, "scope": 7, "term": "(double T5 X7)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "135": { "goal": [ { "clause": 0, "scope": 3, "term": "(pred (s (s T8)) X18)" }, { "clause": 1, "scope": 3, "term": "(pred (s (s T8)) X18)" }, { "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "256": { "goal": [ { "clause": 0, "scope": 4, "term": "(pred (s T12) X29)" }, { "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }, { "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "333": { "goal": [{ "clause": 3, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "136": { "goal": [ { "clause": 1, "scope": 3, "term": "(pred (s (s T8)) X18)" }, { "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "334": { "goal": [{ "clause": 4, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "137": { "goal": [{ "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "258": { "goal": [ { "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }, { "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "335": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "138": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "336": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "337": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "31": { "goal": [{ "clause": -1, "scope": -1, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "32": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (double T5 X7) (f X7))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "261": { "goal": [{ "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "262": { "goal": [{ "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "264": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "266": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "268": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "303": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "304": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "108": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "306": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 3, "to": 6, "label": "CASE" }, { "from": 6, "to": 9, "label": "EVAL with clause\nf(s(X5)) :- ','(half(s(X5), X6), ','(double(X6, X7), f(X7))).\nand substitutionX5 -> T4,\nT1 -> s(T4)" }, { "from": 6, "to": 10, "label": "EVAL-BACKTRACK" }, { "from": 9, "to": 31, "label": "SPLIT 1" }, { "from": 9, "to": 32, "label": "SPLIT 2\nnew knowledge:\nT4 is ground\nT5 is ground\nreplacements:X6 -> T5" }, { "from": 31, "to": 63, "label": "CASE" }, { "from": 32, "to": 330, "label": "SPLIT 1" }, { "from": 32, "to": 331, "label": "SPLIT 2\nnew knowledge:\nT5 is ground\nT23 is ground\nreplacements:X7 -> T23" }, { "from": 63, "to": 64, "label": "BACKTRACK\nfor clause: half(0, 0)because of non-unification" }, { "from": 64, "to": 98, "label": "EVAL with clause\nhalf(s(s(X16)), s(X17)) :- ','(pred(s(s(X16)), X18), ','(pred(X18, X19), half(X19, X17))).\nand substitutionX16 -> T8,\nT4 -> s(T8),\nX17 -> X20,\nX6 -> s(X20)" }, { "from": 64, "to": 108, "label": "EVAL-BACKTRACK" }, { "from": 98, "to": 133, "label": "SPLIT 1" }, { "from": 98, "to": 134, "label": "SPLIT 2\nnew knowledge:\nT8 is ground\nT9 is ground\nreplacements:X18 -> T9" }, { "from": 133, "to": 135, "label": "CASE" }, { "from": 134, "to": 276, "label": "SPLIT 1" }, { "from": 134, "to": 278, "label": "SPLIT 2\nnew knowledge:\nT9 is ground\nT16 is ground\nreplacements:X19 -> T16" }, { "from": 135, "to": 136, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 136, "to": 137, "label": "BACKTRACK\nfor clause: pred(s(0), 0)because of non-unification" }, { "from": 137, "to": 138, "label": "ONLY EVAL with clause\npred(s(s(X27)), s(X28)) :- pred(s(X27), X28).\nand substitutionT8 -> T12,\nX27 -> T12,\nX28 -> X29,\nX18 -> s(X29)" }, { "from": 138, "to": 256, "label": "CASE" }, { "from": 256, "to": 258, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 258, "to": 261, "label": "PARALLEL" }, { "from": 258, "to": 262, "label": "PARALLEL" }, { "from": 261, "to": 264, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT12 -> 0,\nX29 -> 0" }, { "from": 261, "to": 266, "label": "EVAL-BACKTRACK" }, { "from": 262, "to": 271, "label": "EVAL with clause\npred(s(s(X36)), s(X37)) :- pred(s(X36), X37).\nand substitutionX36 -> T15,\nT12 -> s(T15),\nX37 -> X38,\nX29 -> s(X38)" }, { "from": 262, "to": 272, "label": "EVAL-BACKTRACK" }, { "from": 264, "to": 268, "label": "SUCCESS" }, { "from": 271, "to": 138, "label": "INSTANCE with matching:\nT12 -> T15\nX29 -> X38" }, { "from": 276, "to": 283, "label": "CASE" }, { "from": 278, "to": 322, "label": "CASE" }, { "from": 283, "to": 285, "label": "PARALLEL" }, { "from": 283, "to": 287, "label": "PARALLEL" }, { "from": 285, "to": 291, "label": "EVAL with clause\npred(0, 0).\nand substitutionT9 -> 0,\nX19 -> 0" }, { "from": 285, "to": 293, "label": "EVAL-BACKTRACK" }, { "from": 287, "to": 298, "label": "PARALLEL" }, { "from": 287, "to": 299, "label": "PARALLEL" }, { "from": 291, "to": 295, "label": "SUCCESS" }, { "from": 298, "to": 303, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT9 -> s(0),\nX19 -> 0" }, { "from": 298, "to": 304, "label": "EVAL-BACKTRACK" }, { "from": 299, "to": 314, "label": "EVAL with clause\npred(s(s(X45)), s(X46)) :- pred(s(X45), X46).\nand substitutionX45 -> T19,\nT9 -> s(s(T19)),\nX46 -> X47,\nX19 -> s(X47)" }, { "from": 299, "to": 316, "label": "EVAL-BACKTRACK" }, { "from": 303, "to": 306, "label": "SUCCESS" }, { "from": 314, "to": 276, "label": "INSTANCE with matching:\nT9 -> s(T19)\nX19 -> X47" }, { "from": 322, "to": 323, "label": "PARALLEL" }, { "from": 322, "to": 324, "label": "PARALLEL" }, { "from": 323, "to": 325, "label": "EVAL with clause\nhalf(0, 0).\nand substitutionT16 -> 0,\nX20 -> 0" }, { "from": 323, "to": 326, "label": "EVAL-BACKTRACK" }, { "from": 324, "to": 328, "label": "EVAL with clause\nhalf(s(s(X56)), s(X57)) :- ','(pred(s(s(X56)), X58), ','(pred(X58, X59), half(X59, X57))).\nand substitutionX56 -> T22,\nT16 -> s(s(T22)),\nX57 -> X60,\nX20 -> s(X60)" }, { "from": 324, "to": 329, "label": "EVAL-BACKTRACK" }, { "from": 325, "to": 327, "label": "SUCCESS" }, { "from": 328, "to": 98, "label": "INSTANCE with matching:\nT8 -> T22\nX18 -> X58\nX19 -> X59\nX20 -> X60" }, { "from": 330, "to": 332, "label": "CASE" }, { "from": 331, "to": 3, "label": "INSTANCE with matching:\nT1 -> T23" }, { "from": 332, "to": 333, "label": "PARALLEL" }, { "from": 332, "to": 334, "label": "PARALLEL" }, { "from": 333, "to": 335, "label": "EVAL with clause\ndouble(0, 0).\nand substitutionT5 -> 0,\nX7 -> 0" }, { "from": 333, "to": 336, "label": "EVAL-BACKTRACK" }, { "from": 334, "to": 355, "label": "EVAL with clause\ndouble(s(X68), s(s(X69))) :- ','(pred(s(X68), X70), double(X70, X69)).\nand substitutionX68 -> T26,\nT5 -> s(T26),\nX69 -> X71,\nX7 -> s(s(X71))" }, { "from": 334, "to": 356, "label": "EVAL-BACKTRACK" }, { "from": 335, "to": 337, "label": "SUCCESS" }, { "from": 355, "to": 374, "label": "SPLIT 1" }, { "from": 355, "to": 375, "label": "SPLIT 2\nnew knowledge:\nT26 is ground\nT27 is ground\nreplacements:X70 -> T27" }, { "from": 374, "to": 276, "label": "INSTANCE with matching:\nT9 -> s(T26)\nX19 -> X70" }, { "from": 375, "to": 330, "label": "INSTANCE with matching:\nT5 -> T27\nX7 -> X71" } ], "type": "Graph" } } ---------------------------------------- (190) Complex Obligation (AND) ---------------------------------------- (191) Obligation: Rules: f287_in(T9) -> f298_in(T9) :|: TRUE f287_in(x) -> f299_in(x) :|: TRUE f299_out(x1) -> f287_out(x1) :|: TRUE f298_out(x2) -> f287_out(x2) :|: TRUE f314_in(T19) -> f276_in(s(T19)) :|: TRUE f276_out(s(x3)) -> f314_out(x3) :|: TRUE f287_out(x4) -> f283_out(x4) :|: TRUE f283_in(x5) -> f285_in(x5) :|: TRUE f285_out(x6) -> f283_out(x6) :|: TRUE f283_in(x7) -> f287_in(x7) :|: TRUE f314_out(x8) -> f299_out(s(s(x8))) :|: TRUE f299_in(x9) -> f316_in :|: TRUE f299_in(s(s(x10))) -> f314_in(x10) :|: TRUE f316_out -> f299_out(x11) :|: TRUE f276_in(x12) -> f283_in(x12) :|: TRUE f283_out(x13) -> f276_out(x13) :|: TRUE f6_out(T1) -> f3_out(T1) :|: TRUE f3_in(x14) -> f6_in(x14) :|: TRUE f9_out(T4) -> f6_out(s(T4)) :|: TRUE f6_in(s(x15)) -> f9_in(x15) :|: TRUE f10_out -> f6_out(x16) :|: TRUE f6_in(x17) -> f10_in :|: TRUE f9_in(x18) -> f31_in(x18) :|: TRUE f31_out(x19) -> f32_in(x20) :|: TRUE f32_out(x21) -> f9_out(x22) :|: TRUE f331_out(T23) -> f32_out(T5) :|: TRUE f32_in(x23) -> f330_in(x23) :|: TRUE f330_out(x24) -> f331_in(x25) :|: TRUE f332_out(x26) -> f330_out(x26) :|: TRUE f330_in(x27) -> f332_in(x27) :|: TRUE f332_in(x28) -> f334_in(x28) :|: TRUE f332_in(x29) -> f333_in(x29) :|: TRUE f333_out(x30) -> f332_out(x30) :|: TRUE f334_out(x31) -> f332_out(x31) :|: TRUE f334_in(s(T26)) -> f355_in(T26) :|: TRUE f355_out(x32) -> f334_out(s(x32)) :|: TRUE f334_in(x33) -> f356_in :|: TRUE f356_out -> f334_out(x34) :|: TRUE f355_in(x35) -> f374_in(x35) :|: TRUE f374_out(x36) -> f375_in(x37) :|: TRUE f375_out(x38) -> f355_out(x39) :|: TRUE f276_out(s(x40)) -> f374_out(x40) :|: TRUE f374_in(x41) -> f276_in(s(x41)) :|: TRUE f31_in(x42) -> f63_in(x42) :|: TRUE f63_out(x43) -> f31_out(x43) :|: TRUE f64_out(x44) -> f63_out(x44) :|: TRUE f63_in(x45) -> f64_in(x45) :|: TRUE f64_in(s(T8)) -> f98_in(T8) :|: TRUE f108_out -> f64_out(x46) :|: TRUE f98_out(x47) -> f64_out(s(x47)) :|: TRUE f64_in(x48) -> f108_in :|: TRUE f134_out(x49) -> f98_out(x50) :|: TRUE f98_in(x51) -> f133_in(x51) :|: TRUE f133_out(x52) -> f134_in(x53) :|: TRUE f276_out(x54) -> f278_in(x55) :|: TRUE f134_in(x56) -> f276_in(x56) :|: TRUE f278_out(x57) -> f134_out(x58) :|: TRUE Start term: f3_in(T1) ---------------------------------------- (192) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (193) TRUE ---------------------------------------- (194) Obligation: Rules: f285_in(T9) -> f293_in :|: TRUE f291_out -> f285_out(0) :|: TRUE f285_in(0) -> f291_in :|: TRUE f293_out -> f285_out(x) :|: TRUE f287_in(x1) -> f298_in(x1) :|: TRUE f287_in(x2) -> f299_in(x2) :|: TRUE f299_out(x3) -> f287_out(x3) :|: TRUE f298_out(x4) -> f287_out(x4) :|: TRUE f314_in(T19) -> f276_in(s(T19)) :|: TRUE f276_out(s(x5)) -> f314_out(x5) :|: TRUE f291_in -> f291_out :|: TRUE f332_out(T5) -> f330_out(T5) :|: TRUE f330_in(x6) -> f332_in(x6) :|: TRUE f303_in -> f303_out :|: TRUE f314_out(x7) -> f299_out(s(s(x7))) :|: TRUE f299_in(x8) -> f316_in :|: TRUE f299_in(s(s(x9))) -> f314_in(x9) :|: TRUE f316_out -> f299_out(x10) :|: TRUE f276_in(x11) -> f283_in(x11) :|: TRUE f283_out(x12) -> f276_out(x12) :|: TRUE f355_in(T26) -> f374_in(T26) :|: TRUE f374_out(x13) -> f375_in(x14) :|: TRUE f375_out(x15) -> f355_out(x16) :|: TRUE f298_in(s(0)) -> f303_in :|: TRUE f304_out -> f298_out(x17) :|: TRUE f303_out -> f298_out(s(0)) :|: TRUE f298_in(x18) -> f304_in :|: TRUE f375_in(T27) -> f330_in(T27) :|: TRUE f330_out(x19) -> f375_out(x19) :|: TRUE f276_out(s(x20)) -> f374_out(x20) :|: TRUE f374_in(x21) -> f276_in(s(x21)) :|: TRUE f332_in(x22) -> f334_in(x22) :|: TRUE f332_in(x23) -> f333_in(x23) :|: TRUE f333_out(x24) -> f332_out(x24) :|: TRUE f334_out(x25) -> f332_out(x25) :|: TRUE f287_out(x26) -> f283_out(x26) :|: TRUE f283_in(x27) -> f285_in(x27) :|: TRUE f285_out(x28) -> f283_out(x28) :|: TRUE f283_in(x29) -> f287_in(x29) :|: TRUE f334_in(s(x30)) -> f355_in(x30) :|: TRUE f355_out(x31) -> f334_out(s(x31)) :|: TRUE f334_in(x32) -> f356_in :|: TRUE f356_out -> f334_out(x33) :|: TRUE f6_out(T1) -> f3_out(T1) :|: TRUE f3_in(x34) -> f6_in(x34) :|: TRUE f9_out(T4) -> f6_out(s(T4)) :|: TRUE f6_in(s(x35)) -> f9_in(x35) :|: TRUE f10_out -> f6_out(x36) :|: TRUE f6_in(x37) -> f10_in :|: TRUE f9_in(x38) -> f31_in(x38) :|: TRUE f31_out(x39) -> f32_in(x40) :|: TRUE f32_out(x41) -> f9_out(x42) :|: TRUE f331_out(x43) -> f32_out(x44) :|: TRUE f32_in(x45) -> f330_in(x45) :|: TRUE f330_out(x46) -> f331_in(x47) :|: TRUE Start term: f3_in(T1) ---------------------------------------- (195) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (196) TRUE ---------------------------------------- (197) Obligation: Rules: f258_in(T12) -> f261_in(T12) :|: TRUE f262_out(x) -> f258_out(x) :|: TRUE f258_in(x1) -> f262_in(x1) :|: TRUE f261_out(x2) -> f258_out(x2) :|: TRUE f262_in(x3) -> f272_in :|: TRUE f272_out -> f262_out(x4) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f271_out(x5) -> f262_out(s(x5)) :|: TRUE f256_in(x6) -> f258_in(x6) :|: TRUE f258_out(x7) -> f256_out(x7) :|: TRUE f256_out(x8) -> f138_out(x8) :|: TRUE f138_in(x9) -> f256_in(x9) :|: TRUE f138_out(x10) -> f271_out(x10) :|: TRUE f271_in(x11) -> f138_in(x11) :|: TRUE f6_out(T1) -> f3_out(T1) :|: TRUE f3_in(x12) -> f6_in(x12) :|: TRUE f9_out(T4) -> f6_out(s(T4)) :|: TRUE f6_in(s(x13)) -> f9_in(x13) :|: TRUE f10_out -> f6_out(x14) :|: TRUE f6_in(x15) -> f10_in :|: TRUE f9_in(x16) -> f31_in(x16) :|: TRUE f31_out(x17) -> f32_in(x18) :|: TRUE f32_out(x19) -> f9_out(x20) :|: TRUE f31_in(x21) -> f63_in(x21) :|: TRUE f63_out(x22) -> f31_out(x22) :|: TRUE f64_out(x23) -> f63_out(x23) :|: TRUE f63_in(x24) -> f64_in(x24) :|: TRUE f64_in(s(T8)) -> f98_in(T8) :|: TRUE f108_out -> f64_out(x25) :|: TRUE f98_out(x26) -> f64_out(s(x26)) :|: TRUE f64_in(x27) -> f108_in :|: TRUE f134_out(x28) -> f98_out(x29) :|: TRUE f98_in(x30) -> f133_in(x30) :|: TRUE f133_out(x31) -> f134_in(x32) :|: TRUE f133_in(x33) -> f135_in(x33) :|: TRUE f135_out(x34) -> f133_out(x34) :|: TRUE f135_in(x35) -> f136_in(x35) :|: TRUE f136_out(x36) -> f135_out(x36) :|: TRUE f136_in(x37) -> f137_in(x37) :|: TRUE f137_out(x38) -> f136_out(x38) :|: TRUE f137_in(x39) -> f138_in(x39) :|: TRUE f138_out(x40) -> f137_out(x40) :|: TRUE Start term: f3_in(T1) ---------------------------------------- (198) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f258_in(x1) -> f262_in(x1) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f256_in(x6) -> f258_in(x6) :|: TRUE f138_in(x9) -> f256_in(x9) :|: TRUE f271_in(x11) -> f138_in(x11) :|: TRUE ---------------------------------------- (199) Obligation: Rules: f258_in(x1) -> f262_in(x1) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f256_in(x6) -> f258_in(x6) :|: TRUE f138_in(x9) -> f256_in(x9) :|: TRUE f271_in(x11) -> f138_in(x11) :|: TRUE ---------------------------------------- (200) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (201) Obligation: Rules: f138_in(s(T15:0)) -> f138_in(T15:0) :|: TRUE ---------------------------------------- (202) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (203) Obligation: Rules: f138_in(s(T15:0)) -> f138_in(T15:0) :|: TRUE ---------------------------------------- (204) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f138_in(s(T15:0)) -> f138_in(T15:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (205) Obligation: Termination digraph: Nodes: (1) f138_in(s(T15:0)) -> f138_in(T15:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (206) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f138_in(VARIABLE) s(VARIABLE) Removed predefined arithmetic. ---------------------------------------- (207) Obligation: Rules: f138_in(s(T15:0)) -> f138_in(T15:0) ---------------------------------------- (208) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (209) Obligation: Q DP problem: The TRS P consists of the following rules: f138_in(s(T15:0)) -> f138_in(T15:0) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (210) 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: *f138_in(s(T15:0)) -> f138_in(T15:0) The graph contains the following edges 1 > 1 ---------------------------------------- (211) YES ---------------------------------------- (212) Obligation: Rules: f285_in(T9) -> f293_in :|: TRUE f291_out -> f285_out(0) :|: TRUE f285_in(0) -> f291_in :|: TRUE f293_out -> f285_out(x) :|: TRUE f322_in(T16) -> f324_in(T16) :|: TRUE f322_in(x1) -> f323_in(x1) :|: TRUE f323_out(x2) -> f322_out(x2) :|: TRUE f324_out(x3) -> f322_out(x3) :|: TRUE f287_in(x4) -> f298_in(x4) :|: TRUE f287_in(x5) -> f299_in(x5) :|: TRUE f299_out(x6) -> f287_out(x6) :|: TRUE f298_out(x7) -> f287_out(x7) :|: TRUE f314_in(T19) -> f276_in(s(T19)) :|: TRUE f276_out(s(x8)) -> f314_out(x8) :|: TRUE f262_in(T12) -> f272_in :|: TRUE f272_out -> f262_out(x9) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f271_out(x10) -> f262_out(s(x10)) :|: TRUE f135_in(T8) -> f136_in(T8) :|: TRUE f136_out(x11) -> f135_out(x11) :|: TRUE f256_in(x12) -> f258_in(x12) :|: TRUE f258_out(x13) -> f256_out(x13) :|: TRUE f314_out(x14) -> f299_out(s(s(x14))) :|: TRUE f299_in(x15) -> f316_in :|: TRUE f299_in(s(s(x16))) -> f314_in(x16) :|: TRUE f316_out -> f299_out(x17) :|: TRUE f138_out(x18) -> f271_out(x18) :|: TRUE f271_in(x19) -> f138_in(x19) :|: TRUE f276_in(x20) -> f283_in(x20) :|: TRUE f283_out(x21) -> f276_out(x21) :|: TRUE f258_in(x22) -> f261_in(x22) :|: TRUE f262_out(x23) -> f258_out(x23) :|: TRUE f258_in(x24) -> f262_in(x24) :|: TRUE f261_out(x25) -> f258_out(x25) :|: TRUE f322_out(x26) -> f278_out(x26) :|: TRUE f278_in(x27) -> f322_in(x27) :|: TRUE f298_in(s(0)) -> f303_in :|: TRUE f304_out -> f298_out(x28) :|: TRUE f303_out -> f298_out(s(0)) :|: TRUE f298_in(x29) -> f304_in :|: TRUE f287_out(x30) -> f283_out(x30) :|: TRUE f283_in(x31) -> f285_in(x31) :|: TRUE f285_out(x32) -> f283_out(x32) :|: TRUE f283_in(x33) -> f287_in(x33) :|: TRUE f276_out(x34) -> f278_in(x35) :|: TRUE f134_in(x36) -> f276_in(x36) :|: TRUE f278_out(x37) -> f134_out(x38) :|: TRUE f328_out(T22) -> f324_out(s(s(T22))) :|: TRUE f324_in(x39) -> f329_in :|: TRUE f329_out -> f324_out(x40) :|: TRUE f324_in(s(s(x41))) -> f328_in(x41) :|: TRUE f134_out(x42) -> f98_out(x43) :|: TRUE f98_in(x44) -> f133_in(x44) :|: TRUE f133_out(x45) -> f134_in(x46) :|: TRUE f291_in -> f291_out :|: TRUE f264_in -> f264_out :|: TRUE f256_out(x47) -> f138_out(x47) :|: TRUE f138_in(x48) -> f256_in(x48) :|: TRUE f303_in -> f303_out :|: TRUE f133_in(x49) -> f135_in(x49) :|: TRUE f135_out(x50) -> f133_out(x50) :|: TRUE f137_in(x51) -> f138_in(x51) :|: TRUE f138_out(x52) -> f137_out(x52) :|: TRUE f328_in(x53) -> f98_in(x53) :|: TRUE f98_out(x54) -> f328_out(x54) :|: TRUE f136_in(x55) -> f137_in(x55) :|: TRUE f137_out(x56) -> f136_out(x56) :|: TRUE f266_out -> f261_out(x57) :|: TRUE f261_in(0) -> f264_in :|: TRUE f264_out -> f261_out(0) :|: TRUE f261_in(x58) -> f266_in :|: TRUE f6_out(T1) -> f3_out(T1) :|: TRUE f3_in(x59) -> f6_in(x59) :|: TRUE f9_out(T4) -> f6_out(s(T4)) :|: TRUE f6_in(s(x60)) -> f9_in(x60) :|: TRUE f10_out -> f6_out(x61) :|: TRUE f6_in(x62) -> f10_in :|: TRUE f9_in(x63) -> f31_in(x63) :|: TRUE f31_out(x64) -> f32_in(x65) :|: TRUE f32_out(x66) -> f9_out(x67) :|: TRUE f31_in(x68) -> f63_in(x68) :|: TRUE f63_out(x69) -> f31_out(x69) :|: TRUE f64_out(x70) -> f63_out(x70) :|: TRUE f63_in(x71) -> f64_in(x71) :|: TRUE f64_in(s(x72)) -> f98_in(x72) :|: TRUE f108_out -> f64_out(x73) :|: TRUE f98_out(x74) -> f64_out(s(x74)) :|: TRUE f64_in(x75) -> f108_in :|: TRUE Start term: f3_in(T1) ---------------------------------------- (213) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f291_out -> f285_out(0) :|: TRUE f285_in(0) -> f291_in :|: TRUE f322_in(T16) -> f324_in(T16) :|: TRUE f287_in(x4) -> f298_in(x4) :|: TRUE f287_in(x5) -> f299_in(x5) :|: TRUE f299_out(x6) -> f287_out(x6) :|: TRUE f298_out(x7) -> f287_out(x7) :|: TRUE f314_in(T19) -> f276_in(s(T19)) :|: TRUE f276_out(s(x8)) -> f314_out(x8) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f271_out(x10) -> f262_out(s(x10)) :|: TRUE f135_in(T8) -> f136_in(T8) :|: TRUE f136_out(x11) -> f135_out(x11) :|: TRUE f256_in(x12) -> f258_in(x12) :|: TRUE f258_out(x13) -> f256_out(x13) :|: TRUE f314_out(x14) -> f299_out(s(s(x14))) :|: TRUE f299_in(s(s(x16))) -> f314_in(x16) :|: TRUE f138_out(x18) -> f271_out(x18) :|: TRUE f271_in(x19) -> f138_in(x19) :|: TRUE f276_in(x20) -> f283_in(x20) :|: TRUE f283_out(x21) -> f276_out(x21) :|: TRUE f258_in(x22) -> f261_in(x22) :|: TRUE f262_out(x23) -> f258_out(x23) :|: TRUE f258_in(x24) -> f262_in(x24) :|: TRUE f261_out(x25) -> f258_out(x25) :|: TRUE f278_in(x27) -> f322_in(x27) :|: TRUE f298_in(s(0)) -> f303_in :|: TRUE f303_out -> f298_out(s(0)) :|: TRUE f287_out(x30) -> f283_out(x30) :|: TRUE f283_in(x31) -> f285_in(x31) :|: TRUE f285_out(x32) -> f283_out(x32) :|: TRUE f283_in(x33) -> f287_in(x33) :|: TRUE f276_out(x34) -> f278_in(x35) :|: TRUE f134_in(x36) -> f276_in(x36) :|: TRUE f324_in(s(s(x41))) -> f328_in(x41) :|: TRUE f98_in(x44) -> f133_in(x44) :|: TRUE f133_out(x45) -> f134_in(x46) :|: TRUE f291_in -> f291_out :|: TRUE f264_in -> f264_out :|: TRUE f256_out(x47) -> f138_out(x47) :|: TRUE f138_in(x48) -> f256_in(x48) :|: TRUE f303_in -> f303_out :|: TRUE f133_in(x49) -> f135_in(x49) :|: TRUE f135_out(x50) -> f133_out(x50) :|: TRUE f137_in(x51) -> f138_in(x51) :|: TRUE f138_out(x52) -> f137_out(x52) :|: TRUE f328_in(x53) -> f98_in(x53) :|: TRUE f136_in(x55) -> f137_in(x55) :|: TRUE f137_out(x56) -> f136_out(x56) :|: TRUE f261_in(0) -> f264_in :|: TRUE f264_out -> f261_out(0) :|: TRUE ---------------------------------------- (214) Obligation: Rules: f291_out -> f285_out(0) :|: TRUE f285_in(0) -> f291_in :|: TRUE f322_in(T16) -> f324_in(T16) :|: TRUE f287_in(x4) -> f298_in(x4) :|: TRUE f287_in(x5) -> f299_in(x5) :|: TRUE f299_out(x6) -> f287_out(x6) :|: TRUE f298_out(x7) -> f287_out(x7) :|: TRUE f314_in(T19) -> f276_in(s(T19)) :|: TRUE f276_out(s(x8)) -> f314_out(x8) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f271_out(x10) -> f262_out(s(x10)) :|: TRUE f135_in(T8) -> f136_in(T8) :|: TRUE f136_out(x11) -> f135_out(x11) :|: TRUE f256_in(x12) -> f258_in(x12) :|: TRUE f258_out(x13) -> f256_out(x13) :|: TRUE f314_out(x14) -> f299_out(s(s(x14))) :|: TRUE f299_in(s(s(x16))) -> f314_in(x16) :|: TRUE f138_out(x18) -> f271_out(x18) :|: TRUE f271_in(x19) -> f138_in(x19) :|: TRUE f276_in(x20) -> f283_in(x20) :|: TRUE f283_out(x21) -> f276_out(x21) :|: TRUE f258_in(x22) -> f261_in(x22) :|: TRUE f262_out(x23) -> f258_out(x23) :|: TRUE f258_in(x24) -> f262_in(x24) :|: TRUE f261_out(x25) -> f258_out(x25) :|: TRUE f278_in(x27) -> f322_in(x27) :|: TRUE f298_in(s(0)) -> f303_in :|: TRUE f303_out -> f298_out(s(0)) :|: TRUE f287_out(x30) -> f283_out(x30) :|: TRUE f283_in(x31) -> f285_in(x31) :|: TRUE f285_out(x32) -> f283_out(x32) :|: TRUE f283_in(x33) -> f287_in(x33) :|: TRUE f276_out(x34) -> f278_in(x35) :|: TRUE f134_in(x36) -> f276_in(x36) :|: TRUE f324_in(s(s(x41))) -> f328_in(x41) :|: TRUE f98_in(x44) -> f133_in(x44) :|: TRUE f133_out(x45) -> f134_in(x46) :|: TRUE f291_in -> f291_out :|: TRUE f264_in -> f264_out :|: TRUE f256_out(x47) -> f138_out(x47) :|: TRUE f138_in(x48) -> f256_in(x48) :|: TRUE f303_in -> f303_out :|: TRUE f133_in(x49) -> f135_in(x49) :|: TRUE f135_out(x50) -> f133_out(x50) :|: TRUE f137_in(x51) -> f138_in(x51) :|: TRUE f138_out(x52) -> f137_out(x52) :|: TRUE f328_in(x53) -> f98_in(x53) :|: TRUE f136_in(x55) -> f137_in(x55) :|: TRUE f137_out(x56) -> f136_out(x56) :|: TRUE f261_in(0) -> f264_in :|: TRUE f264_out -> f261_out(0) :|: TRUE ---------------------------------------- (215) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (216) Obligation: Rules: f283_out(s(x8:0)) -> f283_out(s(s(x8:0))) :|: TRUE f256_in(cons_0) -> f138_out(0) :|: TRUE && cons_0 = 0 f256_in(s(T15:0)) -> f256_in(T15:0) :|: TRUE f283_in(s(x)) -> f283_out(s(0)) :|: TRUE && x = 0 f138_out(x52:0) -> f283_in(x46:0) :|: TRUE f283_in(s(s(x16:0))) -> f283_in(s(x16:0)) :|: TRUE f138_out(x18:0) -> f138_out(s(x18:0)) :|: TRUE f283_out(x21:0) -> f256_in(x41:0) :|: TRUE f283_in(x1) -> f283_out(0) :|: TRUE && x1 = 0 ---------------------------------------- (217) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (218) Obligation: Rules: f283_out(s(x8:0)) -> f283_out(s(s(x8:0))) :|: TRUE f256_in(cons_0) -> f138_out(0) :|: TRUE && cons_0 = 0 f256_in(s(T15:0)) -> f256_in(T15:0) :|: TRUE f283_in(s(x)) -> f283_out(s(0)) :|: TRUE && x = 0 f138_out(x52:0) -> f283_in(x46:0) :|: TRUE f283_in(s(s(x16:0))) -> f283_in(s(x16:0)) :|: TRUE f138_out(x18:0) -> f138_out(s(x18:0)) :|: TRUE f283_out(x21:0) -> f256_in(x41:0) :|: TRUE f283_in(x1) -> f283_out(0) :|: TRUE && x1 = 0 ---------------------------------------- (219) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f283_out(s(x8:0)) -> f283_out(s(s(x8:0))) :|: TRUE (2) f256_in(cons_0) -> f138_out(0) :|: TRUE && cons_0 = 0 (3) f256_in(s(T15:0)) -> f256_in(T15:0) :|: TRUE (4) f283_in(s(x)) -> f283_out(s(0)) :|: TRUE && x = 0 (5) f138_out(x52:0) -> f283_in(x46:0) :|: TRUE (6) f283_in(s(s(x16:0))) -> f283_in(s(x16:0)) :|: TRUE (7) f138_out(x18:0) -> f138_out(s(x18:0)) :|: TRUE (8) f283_out(x21:0) -> f256_in(x41:0) :|: TRUE (9) f283_in(x1) -> f283_out(0) :|: TRUE && x1 = 0 Arcs: (1) -> (1), (8) (2) -> (5), (7) (3) -> (2), (3) (4) -> (1), (8) (5) -> (4), (6), (9) (6) -> (4), (6) (7) -> (5), (7) (8) -> (2), (3) (9) -> (8) This digraph is fully evaluated! ---------------------------------------- (220) Obligation: Termination digraph: Nodes: (1) f283_out(s(x8:0)) -> f283_out(s(s(x8:0))) :|: TRUE (2) f283_in(s(x)) -> f283_out(s(0)) :|: TRUE && x = 0 (3) f283_in(s(s(x16:0))) -> f283_in(s(x16:0)) :|: TRUE (4) f138_out(x52:0) -> f283_in(x46:0) :|: TRUE (5) f138_out(x18:0) -> f138_out(s(x18:0)) :|: TRUE (6) f256_in(cons_0) -> f138_out(0) :|: TRUE && cons_0 = 0 (7) f256_in(s(T15:0)) -> f256_in(T15:0) :|: TRUE (8) f283_out(x21:0) -> f256_in(x41:0) :|: TRUE (9) f283_in(x1) -> f283_out(0) :|: TRUE && x1 = 0 Arcs: (1) -> (1), (8) (2) -> (1), (8) (3) -> (2), (3) (4) -> (2), (3), (9) (5) -> (4), (5) (6) -> (4), (5) (7) -> (6), (7) (8) -> (6), (7) (9) -> (8) This digraph is fully evaluated! ---------------------------------------- (221) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (222) Obligation: Rules: f283_in(s(s(x16:0:0))) -> f283_in(s(x16:0:0)) :|: TRUE f283_out(x21:0:0) -> f256_in(x41:0:0) :|: TRUE f138_out(x52:0:0) -> f283_in(x46:0:0) :|: TRUE f283_in(s(cons_0)) -> f283_out(s(0)) :|: TRUE && cons_0 = 0 f283_in(x) -> f283_out(0) :|: TRUE && x = 0 f138_out(x18:0:0) -> f138_out(s(x18:0:0)) :|: TRUE f283_out(s(x8:0:0)) -> f283_out(s(s(x8:0:0))) :|: TRUE f256_in(x1) -> f138_out(0) :|: TRUE && x1 = 0 f256_in(s(T15:0:0)) -> f256_in(T15:0:0) :|: TRUE ---------------------------------------- (223) IRSwTToIntTRSProof (SOUND) Applied path-length measure to transform intTRS with terms to intTRS. ---------------------------------------- (224) Obligation: Rules: f283_in(s(s(x))) -> f283_in(s(x)) :|: TRUE f283_out(x1) -> f256_in(x2) :|: TRUE f138_out(x3) -> f283_in(x4) :|: TRUE f283_in(s(cons_0)) -> f283_out(s(0)) :|: TRUE && cons_0 = 0 f283_in(x5) -> f283_out(0) :|: TRUE && x5 = 0 f138_out(x7) -> f138_out(s(x7)) :|: TRUE f283_out(s(x8)) -> f283_out(s(s(x8))) :|: TRUE f256_in(x6) -> f138_out(0) :|: TRUE && x6 = 0 f256_in(s(x10)) -> f256_in(x10) :|: TRUE ---------------------------------------- (225) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (226) Obligation: Rules: f283_in(s(s(x:0))) -> f283_in(s(x:0)) :|: TRUE f283_out(x1:0) -> f256_in(x2:0) :|: TRUE f138_out(x3:0) -> f283_in(x4:0) :|: TRUE f283_in(s(cons_0)) -> f283_out(s(0)) :|: TRUE && cons_0 = 0 f283_in(x) -> f283_out(0) :|: TRUE && x = 0 f138_out(x7:0) -> f138_out(s(x7:0)) :|: TRUE f283_out(s(x8:0)) -> f283_out(s(s(x8:0))) :|: TRUE f256_in(x1) -> f138_out(0) :|: TRUE && x1 = 0 f256_in(s(x10:0)) -> f256_in(x10:0) :|: TRUE ---------------------------------------- (227) Obligation: Rules: f9_in(T4) -> f31_in(T4) :|: TRUE f31_out(x) -> f32_in(x1) :|: TRUE f32_out(x2) -> f9_out(x3) :|: TRUE f322_in(T16) -> f324_in(T16) :|: TRUE f322_in(x4) -> f323_in(x4) :|: TRUE f323_out(x5) -> f322_out(x5) :|: TRUE f324_out(x6) -> f322_out(x6) :|: TRUE f287_in(T9) -> f298_in(T9) :|: TRUE f287_in(x7) -> f299_in(x7) :|: TRUE f299_out(x8) -> f287_out(x8) :|: TRUE f298_out(x9) -> f287_out(x9) :|: TRUE f262_in(T12) -> f272_in :|: TRUE f272_out -> f262_out(x10) :|: TRUE f262_in(s(T15)) -> f271_in(T15) :|: TRUE f271_out(x11) -> f262_out(s(x11)) :|: TRUE f256_in(x12) -> f258_in(x12) :|: TRUE f258_out(x13) -> f256_out(x13) :|: TRUE f331_in(T23) -> f3_in(T23) :|: TRUE f3_out(x14) -> f331_out(x14) :|: TRUE f258_in(x15) -> f261_in(x15) :|: TRUE f262_out(x16) -> f258_out(x16) :|: TRUE f258_in(x17) -> f262_in(x17) :|: TRUE f261_out(x18) -> f258_out(x18) :|: TRUE f322_out(x19) -> f278_out(x19) :|: TRUE f278_in(x20) -> f322_in(x20) :|: TRUE f298_in(s(0)) -> f303_in :|: TRUE f304_out -> f298_out(x21) :|: TRUE f303_out -> f298_out(s(0)) :|: TRUE f298_in(x22) -> f304_in :|: TRUE f276_out(s(T26)) -> f374_out(T26) :|: TRUE f374_in(x23) -> f276_in(s(x23)) :|: TRUE f332_in(T5) -> f334_in(T5) :|: TRUE f332_in(x24) -> f333_in(x24) :|: TRUE f333_out(x25) -> f332_out(x25) :|: TRUE f334_out(x26) -> f332_out(x26) :|: TRUE f64_out(x27) -> f63_out(x27) :|: TRUE f63_in(x28) -> f64_in(x28) :|: TRUE f291_in -> f291_out :|: TRUE f335_in -> f335_out :|: TRUE f303_in -> f303_out :|: TRUE f64_in(s(T8)) -> f98_in(T8) :|: TRUE f108_out -> f64_out(x29) :|: TRUE f98_out(x30) -> f64_out(s(x30)) :|: TRUE f64_in(x31) -> f108_in :|: TRUE f285_in(x32) -> f293_in :|: TRUE f291_out -> f285_out(0) :|: TRUE f285_in(0) -> f291_in :|: TRUE f293_out -> f285_out(x33) :|: TRUE f314_in(T19) -> f276_in(s(T19)) :|: TRUE f276_out(s(x34)) -> f314_out(x34) :|: TRUE f135_in(x35) -> f136_in(x35) :|: TRUE f136_out(x36) -> f135_out(x36) :|: TRUE f31_in(x37) -> f63_in(x37) :|: TRUE f63_out(x38) -> f31_out(x38) :|: TRUE f332_out(x39) -> f330_out(x39) :|: TRUE f330_in(x40) -> f332_in(x40) :|: TRUE f314_out(x41) -> f299_out(s(s(x41))) :|: TRUE f299_in(x42) -> f316_in :|: TRUE f299_in(s(s(x43))) -> f314_in(x43) :|: TRUE f316_out -> f299_out(x44) :|: TRUE f138_out(x45) -> f271_out(x45) :|: TRUE f271_in(x46) -> f138_in(x46) :|: TRUE f276_in(x47) -> f283_in(x47) :|: TRUE f283_out(x48) -> f276_out(x48) :|: TRUE f335_out -> f333_out(0) :|: TRUE f333_in(x49) -> f336_in :|: TRUE f333_in(0) -> f335_in :|: TRUE f336_out -> f333_out(x50) :|: TRUE f6_out(T1) -> f3_out(T1) :|: TRUE f3_in(x51) -> f6_in(x51) :|: TRUE f355_in(x52) -> f374_in(x52) :|: TRUE f374_out(x53) -> f375_in(x54) :|: TRUE f375_out(x55) -> f355_out(x56) :|: TRUE f287_out(x57) -> f283_out(x57) :|: TRUE f283_in(x58) -> f285_in(x58) :|: TRUE f285_out(x59) -> f283_out(x59) :|: TRUE f283_in(x60) -> f287_in(x60) :|: TRUE f334_in(s(x61)) -> f355_in(x61) :|: TRUE f355_out(x62) -> f334_out(s(x62)) :|: TRUE f334_in(x63) -> f356_in :|: TRUE f356_out -> f334_out(x64) :|: TRUE f276_out(x65) -> f278_in(x66) :|: TRUE f134_in(x67) -> f276_in(x67) :|: TRUE f278_out(x68) -> f134_out(x69) :|: TRUE f134_out(x70) -> f98_out(x71) :|: TRUE f98_in(x72) -> f133_in(x72) :|: TRUE f133_out(x73) -> f134_in(x74) :|: TRUE f328_out(T22) -> f324_out(s(s(T22))) :|: TRUE f324_in(x75) -> f329_in :|: TRUE f329_out -> f324_out(x76) :|: TRUE f324_in(s(s(x77))) -> f328_in(x77) :|: TRUE f9_out(x78) -> f6_out(s(x78)) :|: TRUE f6_in(s(x79)) -> f9_in(x79) :|: TRUE f10_out -> f6_out(x80) :|: TRUE f6_in(x81) -> f10_in :|: TRUE f264_in -> f264_out :|: TRUE f325_in -> f325_out :|: TRUE f256_out(x82) -> f138_out(x82) :|: TRUE f138_in(x83) -> f256_in(x83) :|: TRUE f133_in(x84) -> f135_in(x84) :|: TRUE f135_out(x85) -> f133_out(x85) :|: TRUE f137_in(x86) -> f138_in(x86) :|: TRUE f138_out(x87) -> f137_out(x87) :|: TRUE f328_in(x88) -> f98_in(x88) :|: TRUE f98_out(x89) -> f328_out(x89) :|: TRUE f136_in(x90) -> f137_in(x90) :|: TRUE f137_out(x91) -> f136_out(x91) :|: TRUE f331_out(x92) -> f32_out(x93) :|: TRUE f32_in(x94) -> f330_in(x94) :|: TRUE f330_out(x95) -> f331_in(x96) :|: TRUE f325_out -> f323_out(0) :|: TRUE f326_out -> f323_out(x97) :|: TRUE f323_in(0) -> f325_in :|: TRUE f323_in(x98) -> f326_in :|: TRUE f375_in(T27) -> f330_in(T27) :|: TRUE f330_out(x99) -> f375_out(x99) :|: TRUE f266_out -> f261_out(x100) :|: TRUE f261_in(0) -> f264_in :|: TRUE f264_out -> f261_out(0) :|: TRUE f261_in(x101) -> f266_in :|: TRUE Start term: f3_in(T1)