/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 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, 0 ms] (4) PiDP (5) DependencyGraphProof [EQUIVALENT, 1 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) QDPQMonotonicMRRProof [EQUIVALENT, 18 ms] (20) QDP (21) DependencyGraphProof [EQUIVALENT, 0 ms] (22) TRUE (23) PiDP (24) UsableRulesProof [EQUIVALENT, 0 ms] (25) PiDP (26) PiDPToQDPProof [SOUND, 0 ms] (27) QDP (28) TransformationProof [EQUIVALENT, 0 ms] (29) QDP (30) QDPQMonotonicMRRProof [EQUIVALENT, 0 ms] (31) QDP (32) QDPQMonotonicMRRProof [EQUIVALENT, 5 ms] (33) QDP (34) QDPOrderProof [EQUIVALENT, 0 ms] (35) QDP (36) PisEmptyProof [EQUIVALENT, 0 ms] (37) YES (38) PiDP (39) UsableRulesProof [EQUIVALENT, 0 ms] (40) PiDP (41) PiDPToQDPProof [SOUND, 0 ms] (42) QDP (43) PrologToPiTRSProof [SOUND, 0 ms] (44) PiTRS (45) DependencyPairsProof [EQUIVALENT, 0 ms] (46) PiDP (47) DependencyGraphProof [EQUIVALENT, 0 ms] (48) AND (49) PiDP (50) UsableRulesProof [EQUIVALENT, 0 ms] (51) PiDP (52) PiDPToQDPProof [SOUND, 0 ms] (53) QDP (54) QDPSizeChangeProof [EQUIVALENT, 0 ms] (55) YES (56) PiDP (57) UsableRulesProof [EQUIVALENT, 0 ms] (58) PiDP (59) PiDPToQDPProof [SOUND, 0 ms] (60) QDP (61) MRRProof [EQUIVALENT, 3 ms] (62) QDP (63) PisEmptyProof [EQUIVALENT, 0 ms] (64) YES (65) PiDP (66) UsableRulesProof [EQUIVALENT, 0 ms] (67) PiDP (68) PiDPToQDPProof [SOUND, 2 ms] (69) QDP (70) MRRProof [EQUIVALENT, 13 ms] (71) QDP (72) RFCMatchBoundsDPProof [EQUIVALENT, 0 ms] (73) YES (74) PiDP (75) UsableRulesProof [EQUIVALENT, 0 ms] (76) PiDP (77) PiDPToQDPProof [SOUND, 0 ms] (78) QDP (79) TransformationProof [SOUND, 0 ms] (80) QDP (81) TransformationProof [SOUND, 0 ms] (82) QDP (83) TransformationProof [EQUIVALENT, 0 ms] (84) QDP (85) TransformationProof [EQUIVALENT, 0 ms] (86) QDP (87) DependencyGraphProof [EQUIVALENT, 0 ms] (88) QDP (89) PrologToDTProblemTransformerProof [SOUND, 0 ms] (90) TRIPLES (91) TriplesToPiDPProof [SOUND, 0 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, 23 ms] (108) QDP (109) QDPOrderProof [EQUIVALENT, 5 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, 0 ms] (126) QDP (127) UsableRulesProof [EQUIVALENT, 0 ms] (128) QDP (129) QReductionProof [EQUIVALENT, 0 ms] (130) QDP (131) QDPQMonotonicMRRProof [EQUIVALENT, 12 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, 333 ms] (143) QDP (144) PrologToTRSTransformerProof [SOUND, 34 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, 71 ms] (181) QDP (182) DependencyGraphProof [EQUIVALENT, 0 ms] (183) TRUE (184) QDP (185) MNOCProof [EQUIVALENT, 0 ms] (186) QDP (187) NonLoopProof [COMPLETE, 16.2 s] (188) NO (189) PrologToIRSwTTransformerProof [SOUND, 41 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, 21 ms] (201) IRSwT (202) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (203) IRSwT (204) IRSwTTerminationDigraphProof [EQUIVALENT, 7 ms] (205) IRSwT (206) TempFilterProof [SOUND, 3 ms] (207) IRSwT (208) IRSwTToQDPProof [SOUND, 1 ms] (209) QDP (210) QDPSizeChangeProof [EQUIVALENT, 0 ms] (211) YES (212) IRSwT (213) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (214) IRSwT (215) IntTRSCompressionProof [EQUIVALENT, 21 ms] (216) IRSwT (217) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (218) IRSwT (219) IRSwTTerminationDigraphProof [EQUIVALENT, 47 ms] (220) IRSwT (221) IntTRSCompressionProof [EQUIVALENT, 12 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(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 ---------------------------------------- (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(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) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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. ---------------------------------------- (19) 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 ---------------------------------------- (20) 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. ---------------------------------------- (21) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (22) TRUE ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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. ---------------------------------------- (28) 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))))) ---------------------------------------- (29) 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. ---------------------------------------- (30) 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 ---------------------------------------- (31) 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. ---------------------------------------- (32) 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 ---------------------------------------- (33) 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. ---------------------------------------- (34) 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)) ---------------------------------------- (35) 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. ---------------------------------------- (36) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (37) YES ---------------------------------------- (38) 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 ---------------------------------------- (39) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (40) 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 ---------------------------------------- (41) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (42) 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. ---------------------------------------- (43) 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 ---------------------------------------- (44) 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 ---------------------------------------- (45) 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 ---------------------------------------- (46) 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 ---------------------------------------- (47) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 4 SCCs with 9 less nodes. ---------------------------------------- (48) Complex Obligation (AND) ---------------------------------------- (49) 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 ---------------------------------------- (50) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (51) 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 ---------------------------------------- (52) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (53) 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. ---------------------------------------- (54) 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 ---------------------------------------- (55) YES ---------------------------------------- (56) 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 ---------------------------------------- (57) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (58) 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 ---------------------------------------- (59) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (60) 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. ---------------------------------------- (61) 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 ---------------------------------------- (62) 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. ---------------------------------------- (63) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (64) YES ---------------------------------------- (65) 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 ---------------------------------------- (66) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (67) 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 ---------------------------------------- (68) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (69) 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. ---------------------------------------- (70) 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 ---------------------------------------- (71) 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. ---------------------------------------- (72) 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: 1217, 1218, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245 Node 1217 is start node and node 1218 is final node. Those nodes are connected through the following edges: * 1217 to 1231 labelled pred_out_ga_1(0)* 1217 to 1232 labelled U1_ga_1(0)* 1217 to 1233 labelled pred_out_ga_1(0)* 1217 to 1234 labelled U5_GA_1(0)* 1217 to 1218 labelled HALF_IN_GA_1(0)* 1217 to 1235 labelled U4_GA_1(0)* 1217 to 1238 labelled U4_GA_1(1)* 1217 to 1241 labelled HALF_IN_GA_1(1)* 1218 to 1218 labelled #_1(0)* 1231 to 1218 labelled 0(0)* 1232 to 1233 labelled pred_in_ga_1(0)* 1232 to 1242 labelled U1_ga_1(1)* 1233 to 1218 labelled s_1(0)* 1234 to 1218 labelled pred_in_ga_1(0)* 1234 to 1241 labelled pred_out_ga_1(1)* 1234 to 1242 labelled U1_ga_1(1)* 1235 to 1236 labelled pred_in_ga_1(0)* 1235 to 1242 labelled U1_ga_1(1)* 1236 to 1237 labelled s_1(0)* 1237 to 1218 labelled s_1(0)* 1238 to 1239 labelled pred_in_ga_1(1)* 1238 to 1244 labelled U1_ga_1(2)* 1239 to 1240 labelled s_1(1)* 1240 to 1218 labelled s_1(1)* 1241 to 1218 labelled 0(1)* 1242 to 1243 labelled pred_in_ga_1(1)* 1242 to 1242 labelled U1_ga_1(1)* 1243 to 1218 labelled s_1(1)* 1244 to 1245 labelled pred_in_ga_1(2)* 1244 to 1242 labelled U1_ga_1(1)* 1245 to 1218 labelled s_1(2) ---------------------------------------- (73) YES ---------------------------------------- (74) 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 ---------------------------------------- (75) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (76) 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 ---------------------------------------- (77) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (78) 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. ---------------------------------------- (79) 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))))) ---------------------------------------- (80) 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. ---------------------------------------- (81) 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)))))) ---------------------------------------- (82) 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. ---------------------------------------- (83) 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)))))) ---------------------------------------- (84) 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. ---------------------------------------- (85) 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)))) ---------------------------------------- (86) 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. ---------------------------------------- (87) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (88) 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. ---------------------------------------- (89) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 37, "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", "392": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "393": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "394": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "471": { "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": [] } }, "472": { "goal": [{ "clause": 3, "scope": 8, "term": "(double T28 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "198": { "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": [] } }, "473": { "goal": [{ "clause": 4, "scope": 8, "term": "(double T28 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "199": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "397": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T17) X44)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T17"], "free": ["X44"], "exprvars": [] } }, "474": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "233": { "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": [] } }, "398": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "475": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "311": { "goal": [{ "clause": 1, "scope": 4, "term": "(pred (s T10) X26)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "432": { "goal": [{ "clause": -1, "scope": -1, "term": "(double (s T18) X4)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "476": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "433": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T24"], "free": [], "exprvars": [] } }, "477": { "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": [] } }, "313": { "goal": [{ "clause": 2, "scope": 4, "term": "(pred (s T10) X26)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "478": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "435": { "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": [] } }, "437": { "goal": [{ "clause": 4, "scope": 7, "term": "(double (s T18) X4)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "439": { "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": [] } }, "284": { "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": [] } }, "285": { "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": [] } }, "286": { "goal": [{ "clause": 2, "scope": 3, "term": "(pred (s (s T6)) X15)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": ["X15"], "exprvars": [] } }, "200": { "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": [] } }, "321": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "201": { "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": [] } }, "322": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "323": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "324": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T13) X35)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T13"], "free": ["X35"], "exprvars": [] } }, "445": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T27) X67)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": ["X67"], "exprvars": [] } }, "204": { "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": [] } }, "369": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "402": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T14 X17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "446": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T28 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T28"], "free": ["X68"], "exprvars": [] } }, "205": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "326": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "403": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (double (s T18) X4) (f X4))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T18"], "free": ["X4"], "exprvars": [] } }, "404": { "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": [] } }, "405": { "goal": [{ "clause": 5, "scope": 6, "term": "(half T14 X17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "406": { "goal": [{ "clause": 6, "scope": 6, "term": "(half T14 X17)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T14"], "free": ["X17"], "exprvars": [] } }, "407": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "408": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "409": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "290": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T10) X26)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T10"], "free": ["X26"], "exprvars": [] } }, "294": { "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": [] } }, "372": { "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": [] } }, "373": { "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": [] } }, "375": { "goal": [{ "clause": 0, "scope": 5, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "410": { "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": [] } }, "411": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "379": { "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": [] } }, "412": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T21)) X55)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T21"], "free": ["X55"], "exprvars": [] } }, "413": { "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": [] } }, "414": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T22 X56)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T22"], "free": ["X56"], "exprvars": [] } }, "415": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T23 X57)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T23"], "free": ["X57"], "exprvars": [] } }, "37": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "38": { "goal": [{ "clause": 7, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "382": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "384": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "386": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "387": { "goal": [{ "clause": 1, "scope": 5, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "388": { "goal": [{ "clause": 2, "scope": 5, "term": "(pred T7 X16)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T7"], "free": ["X16"], "exprvars": [] } }, "226": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T6)) X15)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T6"], "free": ["X15"], "exprvars": [] } }, "304": { "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": [] } } }, "edges": [ { "from": 37, "to": 38, "label": "CASE" }, { "from": 38, "to": 198, "label": "EVAL with clause\nf(s(X2)) :- ','(half(s(X2), X3), ','(double(X3, X4), f(X4))).\nand substitutionX2 -> T3,\nT1 -> s(T3)" }, { "from": 38, "to": 199, "label": "EVAL-BACKTRACK" }, { "from": 198, "to": 200, "label": "CASE" }, { "from": 200, "to": 201, "label": "BACKTRACK\nfor clause: half(0, 0)because of non-unification" }, { "from": 201, "to": 204, "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": 201, "to": 205, "label": "EVAL-BACKTRACK" }, { "from": 204, "to": 226, "label": "SPLIT 1" }, { "from": 204, "to": 233, "label": "SPLIT 2\nnew knowledge:\nT6 is ground\nT7 is ground\nreplacements:X15 -> T7" }, { "from": 226, "to": 284, "label": "CASE" }, { "from": 233, "to": 369, "label": "SPLIT 1" }, { "from": 233, "to": 372, "label": "SPLIT 2\nnew knowledge:\nT7 is ground\nT14 is ground\nreplacements:X16 -> T14" }, { "from": 284, "to": 285, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 285, "to": 286, "label": "BACKTRACK\nfor clause: pred(s(0), 0)because of non-unification" }, { "from": 286, "to": 290, "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": 290, "to": 294, "label": "CASE" }, { "from": 294, "to": 304, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 304, "to": 311, "label": "PARALLEL" }, { "from": 304, "to": 313, "label": "PARALLEL" }, { "from": 311, "to": 321, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT10 -> 0,\nX26 -> 0" }, { "from": 311, "to": 322, "label": "EVAL-BACKTRACK" }, { "from": 313, "to": 324, "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": 313, "to": 326, "label": "EVAL-BACKTRACK" }, { "from": 321, "to": 323, "label": "SUCCESS" }, { "from": 324, "to": 290, "label": "INSTANCE with matching:\nT10 -> T13\nX26 -> X35" }, { "from": 369, "to": 373, "label": "CASE" }, { "from": 372, "to": 402, "label": "SPLIT 1" }, { "from": 372, "to": 403, "label": "SPLIT 2\nnew knowledge:\nT14 is ground\nT18 is ground\nreplacements:X17 -> T18" }, { "from": 373, "to": 375, "label": "PARALLEL" }, { "from": 373, "to": 379, "label": "PARALLEL" }, { "from": 375, "to": 382, "label": "EVAL with clause\npred(0, 0).\nand substitutionT7 -> 0,\nX16 -> 0" }, { "from": 375, "to": 384, "label": "EVAL-BACKTRACK" }, { "from": 379, "to": 387, "label": "PARALLEL" }, { "from": 379, "to": 388, "label": "PARALLEL" }, { "from": 382, "to": 386, "label": "SUCCESS" }, { "from": 387, "to": 392, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT7 -> s(0),\nX16 -> 0" }, { "from": 387, "to": 393, "label": "EVAL-BACKTRACK" }, { "from": 388, "to": 397, "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": 388, "to": 398, "label": "EVAL-BACKTRACK" }, { "from": 392, "to": 394, "label": "SUCCESS" }, { "from": 397, "to": 369, "label": "INSTANCE with matching:\nT7 -> s(T17)\nX16 -> X44" }, { "from": 402, "to": 404, "label": "CASE" }, { "from": 403, "to": 432, "label": "SPLIT 1" }, { "from": 403, "to": 433, "label": "SPLIT 2\nnew knowledge:\nT18 is ground\nT24 is ground\nreplacements:X4 -> T24" }, { "from": 404, "to": 405, "label": "PARALLEL" }, { "from": 404, "to": 406, "label": "PARALLEL" }, { "from": 405, "to": 407, "label": "EVAL with clause\nhalf(0, 0).\nand substitutionT14 -> 0,\nX17 -> 0" }, { "from": 405, "to": 408, "label": "EVAL-BACKTRACK" }, { "from": 406, "to": 410, "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": 406, "to": 411, "label": "EVAL-BACKTRACK" }, { "from": 407, "to": 409, "label": "SUCCESS" }, { "from": 410, "to": 412, "label": "SPLIT 1" }, { "from": 410, "to": 413, "label": "SPLIT 2\nnew knowledge:\nT21 is ground\nT22 is ground\nreplacements:X55 -> T22" }, { "from": 412, "to": 226, "label": "INSTANCE with matching:\nT6 -> T21\nX15 -> X55" }, { "from": 413, "to": 414, "label": "SPLIT 1" }, { "from": 413, "to": 415, "label": "SPLIT 2\nnew knowledge:\nT22 is ground\nT23 is ground\nreplacements:X56 -> T23" }, { "from": 414, "to": 369, "label": "INSTANCE with matching:\nT7 -> T22\nX16 -> X56" }, { "from": 415, "to": 402, "label": "INSTANCE with matching:\nT14 -> T23\nX17 -> X57" }, { "from": 432, "to": 435, "label": "CASE" }, { "from": 433, "to": 37, "label": "INSTANCE with matching:\nT1 -> T24" }, { "from": 435, "to": 437, "label": "BACKTRACK\nfor clause: double(0, 0)because of non-unification" }, { "from": 437, "to": 439, "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": 439, "to": 445, "label": "SPLIT 1" }, { "from": 439, "to": 446, "label": "SPLIT 2\nnew knowledge:\nT27 is ground\nT28 is ground\nreplacements:X67 -> T28" }, { "from": 445, "to": 369, "label": "INSTANCE with matching:\nT7 -> s(T27)\nX16 -> X67" }, { "from": 446, "to": 471, "label": "CASE" }, { "from": 471, "to": 472, "label": "PARALLEL" }, { "from": 471, "to": 473, "label": "PARALLEL" }, { "from": 472, "to": 474, "label": "EVAL with clause\ndouble(0, 0).\nand substitutionT28 -> 0,\nX68 -> 0" }, { "from": 472, "to": 475, "label": "EVAL-BACKTRACK" }, { "from": 473, "to": 477, "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": 473, "to": 478, "label": "EVAL-BACKTRACK" }, { "from": 474, "to": 476, "label": "SUCCESS" }, { "from": 477, "to": 439, "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: Combined order from the following AFS and order. PG_IN_GAA(x1) = PG_IN_GAA U10_GAA(x1, x2) = x2 predcB_in_ga(x1) = predcB_in_ga predcB_out_ga(x1, x2) = predcB_out_ga U23_ga(x1, x2) = x2 Knuth-Bendix order [KBO] with precedence:trivial and weight map: predcB_in_ga=1 PG_IN_GAA=2 predcB_out_ga=3 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": 39, "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", "470": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "430": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "431": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "312": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "434": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T19) X47)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": ["X47"], "exprvars": [] } }, "314": { "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": [] } }, "479": { "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": [] } }, "315": { "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": [] } }, "436": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "316": { "goal": [{ "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "317": { "goal": [{ "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "438": { "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": [] } }, "318": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "319": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "480": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "481": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T26) X70)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T26"], "free": ["X70"], "exprvars": [] } }, "482": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T27 X71)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": ["X71"], "exprvars": [] } }, "440": { "goal": [{ "clause": 5, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "320": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "441": { "goal": [{ "clause": 6, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "442": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "289": { "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": [] } }, "443": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "202": { "goal": [{ "clause": -1, "scope": -1, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "444": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "203": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (double T5 X7) (f X7))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "325": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T15) X38)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T15"], "free": ["X38"], "exprvars": [] } }, "327": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "449": { "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": [] } }, "291": { "goal": [{ "clause": 6, "scope": 2, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "131": { "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": [] } }, "296": { "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": [] } }, "450": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "297": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "133": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "416": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "417": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "418": { "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": [] } }, "39": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "463": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "464": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T23"], "free": [], "exprvars": [] } }, "300": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "421": { "goal": [{ "clause": 0, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "465": { "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": [] } }, "301": { "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": [] } }, "422": { "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": [] } }, "466": { "goal": [{ "clause": 3, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "467": { "goal": [{ "clause": 4, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "303": { "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": [] } }, "424": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "468": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "425": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "469": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "305": { "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": [] } }, "426": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "306": { "goal": [{ "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "427": { "goal": [{ "clause": 1, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "428": { "goal": [{ "clause": 2, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "429": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "40": { "goal": [{ "clause": 7, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 39, "to": 40, "label": "CASE" }, { "from": 40, "to": 131, "label": "EVAL with clause\nf(s(X5)) :- ','(half(s(X5), X6), ','(double(X6, X7), f(X7))).\nand substitutionX5 -> T4,\nT1 -> s(T4)" }, { "from": 40, "to": 133, "label": "EVAL-BACKTRACK" }, { "from": 131, "to": 202, "label": "SPLIT 1" }, { "from": 131, "to": 203, "label": "SPLIT 2\nnew knowledge:\nT4 is ground\nT5 is ground\nreplacements:X6 -> T5" }, { "from": 202, "to": 289, "label": "CASE" }, { "from": 203, "to": 463, "label": "SPLIT 1" }, { "from": 203, "to": 464, "label": "SPLIT 2\nnew knowledge:\nT5 is ground\nT23 is ground\nreplacements:X7 -> T23" }, { "from": 289, "to": 291, "label": "BACKTRACK\nfor clause: half(0, 0)because of non-unification" }, { "from": 291, "to": 296, "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": 291, "to": 297, "label": "EVAL-BACKTRACK" }, { "from": 296, "to": 300, "label": "SPLIT 1" }, { "from": 296, "to": 301, "label": "SPLIT 2\nnew knowledge:\nT8 is ground\nT9 is ground\nreplacements:X18 -> T9" }, { "from": 300, "to": 303, "label": "CASE" }, { "from": 301, "to": 416, "label": "SPLIT 1" }, { "from": 301, "to": 417, "label": "SPLIT 2\nnew knowledge:\nT9 is ground\nT16 is ground\nreplacements:X19 -> T16" }, { "from": 303, "to": 305, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 305, "to": 306, "label": "BACKTRACK\nfor clause: pred(s(0), 0)because of non-unification" }, { "from": 306, "to": 312, "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": 312, "to": 314, "label": "CASE" }, { "from": 314, "to": 315, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 315, "to": 316, "label": "PARALLEL" }, { "from": 315, "to": 317, "label": "PARALLEL" }, { "from": 316, "to": 318, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT12 -> 0,\nX29 -> 0" }, { "from": 316, "to": 319, "label": "EVAL-BACKTRACK" }, { "from": 317, "to": 325, "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": 317, "to": 327, "label": "EVAL-BACKTRACK" }, { "from": 318, "to": 320, "label": "SUCCESS" }, { "from": 325, "to": 312, "label": "INSTANCE with matching:\nT12 -> T15\nX29 -> X38" }, { "from": 416, "to": 418, "label": "CASE" }, { "from": 417, "to": 438, "label": "CASE" }, { "from": 418, "to": 421, "label": "PARALLEL" }, { "from": 418, "to": 422, "label": "PARALLEL" }, { "from": 421, "to": 424, "label": "EVAL with clause\npred(0, 0).\nand substitutionT9 -> 0,\nX19 -> 0" }, { "from": 421, "to": 425, "label": "EVAL-BACKTRACK" }, { "from": 422, "to": 427, "label": "PARALLEL" }, { "from": 422, "to": 428, "label": "PARALLEL" }, { "from": 424, "to": 426, "label": "SUCCESS" }, { "from": 427, "to": 429, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT9 -> s(0),\nX19 -> 0" }, { "from": 427, "to": 430, "label": "EVAL-BACKTRACK" }, { "from": 428, "to": 434, "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": 428, "to": 436, "label": "EVAL-BACKTRACK" }, { "from": 429, "to": 431, "label": "SUCCESS" }, { "from": 434, "to": 416, "label": "INSTANCE with matching:\nT9 -> s(T19)\nX19 -> X47" }, { "from": 438, "to": 440, "label": "PARALLEL" }, { "from": 438, "to": 441, "label": "PARALLEL" }, { "from": 440, "to": 442, "label": "EVAL with clause\nhalf(0, 0).\nand substitutionT16 -> 0,\nX20 -> 0" }, { "from": 440, "to": 443, "label": "EVAL-BACKTRACK" }, { "from": 441, "to": 449, "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": 441, "to": 450, "label": "EVAL-BACKTRACK" }, { "from": 442, "to": 444, "label": "SUCCESS" }, { "from": 449, "to": 296, "label": "INSTANCE with matching:\nT8 -> T22\nX18 -> X58\nX19 -> X59\nX20 -> X60" }, { "from": 463, "to": 465, "label": "CASE" }, { "from": 464, "to": 39, "label": "INSTANCE with matching:\nT1 -> T23" }, { "from": 465, "to": 466, "label": "PARALLEL" }, { "from": 465, "to": 467, "label": "PARALLEL" }, { "from": 466, "to": 468, "label": "EVAL with clause\ndouble(0, 0).\nand substitutionT5 -> 0,\nX7 -> 0" }, { "from": 466, "to": 469, "label": "EVAL-BACKTRACK" }, { "from": 467, "to": 479, "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": 467, "to": 480, "label": "EVAL-BACKTRACK" }, { "from": 468, "to": 470, "label": "SUCCESS" }, { "from": 479, "to": 481, "label": "SPLIT 1" }, { "from": 479, "to": 482, "label": "SPLIT 2\nnew knowledge:\nT26 is ground\nT27 is ground\nreplacements:X70 -> T27" }, { "from": 481, "to": 416, "label": "INSTANCE with matching:\nT9 -> s(T26)\nX19 -> X70" }, { "from": 482, "to": 463, "label": "INSTANCE with matching:\nT5 -> T27\nX7 -> X71" } ], "type": "Graph" } } ---------------------------------------- (145) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_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: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F39_IN(s(T4)) -> U1^1(f131_in(T4), s(T4)) F39_IN(s(T4)) -> F131_IN(T4) F312_IN(s(T15)) -> U2^1(f312_in(T15), s(T15)) F312_IN(s(T15)) -> F312_IN(T15) F416_IN(s(s(T19))) -> U3^1(f416_in(s(T19)), s(s(T19))) F416_IN(s(s(T19))) -> F416_IN(s(T19)) F463_IN(s(T26)) -> U4^1(f479_in(T26), s(T26)) F463_IN(s(T26)) -> F479_IN(T26) F202_IN(s(T8)) -> U5^1(f296_in(T8), s(T8)) F202_IN(s(T8)) -> F296_IN(T8) F300_IN(T12) -> U6^1(f312_in(T12), T12) F300_IN(T12) -> F312_IN(T12) F417_IN(s(s(T22))) -> U7^1(f296_in(T22), s(s(T22))) F417_IN(s(s(T22))) -> F296_IN(T22) F131_IN(T4) -> U8^1(f202_in(T4), T4) F131_IN(T4) -> F202_IN(T4) U8^1(f202_out1(T5), T4) -> U9^1(f203_in(T5), T4, T5) U8^1(f202_out1(T5), T4) -> F203_IN(T5) F203_IN(T5) -> U10^1(f463_in(T5), T5) F203_IN(T5) -> F463_IN(T5) U10^1(f463_out1(T23), T5) -> U11^1(f39_in(T23), T5, T23) U10^1(f463_out1(T23), T5) -> F39_IN(T23) F296_IN(T8) -> U12^1(f300_in(T8), T8) F296_IN(T8) -> F300_IN(T8) U12^1(f300_out1(T9), T8) -> U13^1(f301_in(T9), T8, T9) U12^1(f300_out1(T9), T8) -> F301_IN(T9) F301_IN(T9) -> U14^1(f416_in(T9), T9) F301_IN(T9) -> F416_IN(T9) U14^1(f416_out1(T16), T9) -> U15^1(f417_in(T16), T9, T16) U14^1(f416_out1(T16), T9) -> F417_IN(T16) F479_IN(T26) -> U16^1(f416_in(s(T26)), T26) F479_IN(T26) -> F416_IN(s(T26)) U16^1(f416_out1(T27), T26) -> U17^1(f463_in(T27), T26, T27) U16^1(f416_out1(T27), T26) -> F463_IN(T27) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F416_IN(s(s(T19))) -> F416_IN(s(T19)) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F416_IN(s(s(T19))) -> F416_IN(s(T19)) R is empty. The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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]. f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_out1(x0), x1, x2) ---------------------------------------- (156) Obligation: Q DP problem: The TRS P consists of the following rules: F416_IN(s(s(T19))) -> F416_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: *F416_IN(s(s(T19))) -> F416_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: F479_IN(T26) -> U16^1(f416_in(s(T26)), T26) U16^1(f416_out1(T27), T26) -> F463_IN(T27) F463_IN(s(T26)) -> F479_IN(T26) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F479_IN(T26) -> U16^1(f416_in(s(T26)), T26) U16^1(f416_out1(T27), T26) -> F463_IN(T27) F463_IN(s(T26)) -> F479_IN(T26) The TRS R consists of the following rules: f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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]. f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_out1(x0), x1, x2) ---------------------------------------- (163) Obligation: Q DP problem: The TRS P consists of the following rules: F479_IN(T26) -> U16^1(f416_in(s(T26)), T26) U16^1(f416_out1(T27), T26) -> F463_IN(T27) F463_IN(s(T26)) -> F479_IN(T26) The TRS R consists of the following rules: f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) The set Q consists of the following terms: f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_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. F479_IN(T26) -> U16^1(f416_in(s(T26)), T26) F463_IN(s(T26)) -> F479_IN(T26) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U16^1_2(x_1, x_2) ) = max{0, x_1 - 2} POL( f416_in_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = 2x_1 + 2 POL( 0 ) = 2 POL( f416_out1_1(x_1) ) = x_1 + 2 POL( U3_2(x_1, x_2) ) = 2x_1 POL( F479_IN_1(x_1) ) = 2x_1 + 1 POL( F463_IN_1(x_1) ) = x_1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) ---------------------------------------- (165) Obligation: Q DP problem: The TRS P consists of the following rules: U16^1(f416_out1(T27), T26) -> F463_IN(T27) The TRS R consists of the following rules: f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) The set Q consists of the following terms: f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_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 1 less node. ---------------------------------------- (167) TRUE ---------------------------------------- (168) Obligation: Q DP problem: The TRS P consists of the following rules: F312_IN(s(T15)) -> F312_IN(T15) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F312_IN(s(T15)) -> F312_IN(T15) R is empty. The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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]. f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_out1(x0), x1, x2) ---------------------------------------- (172) Obligation: Q DP problem: The TRS P consists of the following rules: F312_IN(s(T15)) -> F312_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: *F312_IN(s(T15)) -> F312_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: F296_IN(T8) -> U12^1(f300_in(T8), T8) U12^1(f300_out1(T9), T8) -> F301_IN(T9) F301_IN(T9) -> U14^1(f416_in(T9), T9) U14^1(f416_out1(T16), T9) -> F417_IN(T16) F417_IN(s(s(T22))) -> F296_IN(T22) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F296_IN(T8) -> U12^1(f300_in(T8), T8) U12^1(f300_out1(T9), T8) -> F301_IN(T9) F301_IN(T9) -> U14^1(f416_in(T9), T9) U14^1(f416_out1(T16), T9) -> F417_IN(T16) F417_IN(s(s(T22))) -> F296_IN(T22) The TRS R consists of the following rules: f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f300_in(T12) -> U6(f312_in(T12), T12) f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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]. f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_out1(x0), x1, x2) ---------------------------------------- (179) Obligation: Q DP problem: The TRS P consists of the following rules: F296_IN(T8) -> U12^1(f300_in(T8), T8) U12^1(f300_out1(T9), T8) -> F301_IN(T9) F301_IN(T9) -> U14^1(f416_in(T9), T9) U14^1(f416_out1(T16), T9) -> F417_IN(T16) F417_IN(s(s(T22))) -> F296_IN(T22) The TRS R consists of the following rules: f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f300_in(T12) -> U6(f312_in(T12), T12) f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) The set Q consists of the following terms: f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f300_in(x0) U6(f312_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. F417_IN(s(s(T22))) -> F296_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( f300_in_1(x_1) ) = x_1 + 1 POL( U6_2(x_1, x_2) ) = x_1 + 1 POL( f312_in_1(x_1) ) = x_1 POL( U14^1_2(x_1, x_2) ) = 2x_1 POL( f416_in_1(x_1) ) = x_1 POL( 0 ) = 0 POL( f416_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( f312_out1_1(x_1) ) = x_1 POL( U2_2(x_1, x_2) ) = x_1 + 1 POL( f300_out1_1(x_1) ) = x_1 POL( F296_IN_1(x_1) ) = 2x_1 + 2 POL( F301_IN_1(x_1) ) = 2x_1 POL( F417_IN_1(x_1) ) = 2x_1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: f300_in(T12) -> U6(f312_in(T12), T12) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) ---------------------------------------- (181) Obligation: Q DP problem: The TRS P consists of the following rules: F296_IN(T8) -> U12^1(f300_in(T8), T8) U12^1(f300_out1(T9), T8) -> F301_IN(T9) F301_IN(T9) -> U14^1(f416_in(T9), T9) U14^1(f416_out1(T16), T9) -> F417_IN(T16) The TRS R consists of the following rules: f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f300_in(T12) -> U6(f312_in(T12), T12) f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) The set Q consists of the following terms: f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f300_in(x0) U6(f312_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: F39_IN(s(T4)) -> F131_IN(T4) F131_IN(T4) -> U8^1(f202_in(T4), T4) U8^1(f202_out1(T5), T4) -> F203_IN(T5) F203_IN(T5) -> U10^1(f463_in(T5), T5) U10^1(f463_out1(T23), T5) -> F39_IN(T23) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71) The set Q consists of the following terms: f39_in(s(x0)) U1(f131_out1(x0, x1), s(x2)) f312_in(0) f312_in(s(x0)) U2(f312_out1(x0), s(x1)) f416_in(0) f416_in(s(0)) f416_in(s(s(x0))) U3(f416_out1(x0), s(s(x1))) f463_in(0) f463_in(s(x0)) U4(f479_out1(x0, x1), s(x2)) f202_in(s(x0)) U5(f296_out1(x0, x1, x2), s(x3)) f300_in(x0) U6(f312_out1(x0), x1) f417_in(0) f417_in(s(s(x0))) U7(f296_out1(x0, x1, x2), s(s(x3))) f131_in(x0) U8(f202_out1(x0), x1) U9(f203_out1(x0), x1, x2) f203_in(x0) U10(f463_out1(x0), x1) U11(f39_out1, x0, x1) f296_in(x0) U12(f300_out1(x0), x1) U13(f301_out1(x0, x1), x2, x3) f301_in(x0) U14(f416_out1(x0), x1) U15(f417_out1(x0), x1, x2) f479_in(x0) U16(f416_out1(x0), x1) U17(f463_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: F39_IN(s(T4)) -> F131_IN(T4) F131_IN(T4) -> U8^1(f202_in(T4), T4) U8^1(f202_out1(T5), T4) -> F203_IN(T5) F203_IN(T5) -> U10^1(f463_in(T5), T5) U10^1(f463_out1(T23), T5) -> F39_IN(T23) The TRS R consists of the following rules: f39_in(s(T4)) -> U1(f131_in(T4), s(T4)) U1(f131_out1(X6, X7), s(T4)) -> f39_out1 f312_in(0) -> f312_out1(0) f312_in(s(T15)) -> U2(f312_in(T15), s(T15)) U2(f312_out1(X38), s(T15)) -> f312_out1(s(X38)) f416_in(0) -> f416_out1(0) f416_in(s(0)) -> f416_out1(0) f416_in(s(s(T19))) -> U3(f416_in(s(T19)), s(s(T19))) U3(f416_out1(X47), s(s(T19))) -> f416_out1(s(X47)) f463_in(0) -> f463_out1(0) f463_in(s(T26)) -> U4(f479_in(T26), s(T26)) U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))) f202_in(s(T8)) -> U5(f296_in(T8), s(T8)) U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)) f300_in(T12) -> U6(f312_in(T12), T12) U6(f312_out1(X29), T12) -> f300_out1(s(X29)) f417_in(0) -> f417_out1(0) f417_in(s(s(T22))) -> U7(f296_in(T22), s(s(T22))) U7(f296_out1(X58, X59, X60), s(s(T22))) -> f417_out1(s(X60)) f131_in(T4) -> U8(f202_in(T4), T4) U8(f202_out1(T5), T4) -> U9(f203_in(T5), T4, T5) U9(f203_out1(X7), T4, T5) -> f131_out1(T5, X7) f203_in(T5) -> U10(f463_in(T5), T5) U10(f463_out1(T23), T5) -> U11(f39_in(T23), T5, T23) U11(f39_out1, T5, T23) -> f203_out1(T23) f296_in(T8) -> U12(f300_in(T8), T8) U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9) U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20) f301_in(T9) -> U14(f416_in(T9), T9) U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16) U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20) f479_in(T26) -> U16(f416_in(s(T26)), T26) U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27) U17(f463_out1(X71), T26, T27) -> f479_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(f463_out1(s(s(0))), s(0))[ ]^n[ ] -> U10^1(f463_out1(s(s(0))), s(0))[ ]^n[x0 / s(0)] This rule is correct for the QDP as the following derivation shows: U10^1(f463_out1(s(s(0))), s(0))[ ]^n[ ] -> U10^1(f463_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(f463_out1(s(s(0))), x0)[ ]^n[ ] -> U10^1(f463_out1(s(s(0))), s(0))[ ]^n[ ] by Rewrite t with the rewrite sequence : [([0],f463_in(s(T26)) -> U4(f479_in(T26), s(T26))), ([0,0],f479_in(T26) -> U16(f416_in(s(T26)), T26)), ([0,0,0],f416_in(s(0)) -> f416_out1(0)), ([0,0],U16(f416_out1(T27), T26) -> U17(f463_in(T27), T26, T27)), ([0,0,0],f463_in(0) -> f463_out1(0)), ([0,0],U17(f463_out1(X71), T26, T27) -> f479_out1(T27, X71)), ([0],U4(f479_out1(X70, X71), s(T26)) -> f463_out1(s(s(X71))))] U10^1(f463_out1(s(s(0))), x0)[ ]^n[ ] -> U10^1(f463_in(s(0)), s(0))[ ]^n[ ] by Narrowing at position: [] U10^1(f463_out1(s(s(0))), x0)[ ]^n[ ] -> F203_IN(s(0))[ ]^n[ ] by Narrowing at position: [] U10^1(f463_out1(s(s(0))), x0)[ ]^n[ ] -> U8^1(f202_out1(s(0)), s(0))[ ]^n[ ] by Rewrite t with the rewrite sequence : [([0,0,0],U6(f312_out1(X29), T12) -> f300_out1(s(X29))), ([0,0],U12(f300_out1(T9), T8) -> U13(f301_in(T9), T8, T9)), ([0,0,0],f301_in(T9) -> U14(f416_in(T9), T9)), ([0,0,0,0],f416_in(s(0)) -> f416_out1(0)), ([0,0,0],U14(f416_out1(T16), T9) -> U15(f417_in(T16), T9, T16)), ([0,0,0,0],f417_in(0) -> f417_out1(0)), ([0,0,0],U15(f417_out1(X20), T9, T16) -> f301_out1(T16, X20)), ([0,0],U13(f301_out1(X19, X20), T8, T9) -> f296_out1(T9, X19, X20)), ([0],U5(f296_out1(X18, X19, X20), s(T8)) -> f202_out1(s(X20)))] U10^1(f463_out1(s(s(0))), x0)[ ]^n[ ] -> U8^1(U5(U12(U6(f312_out1(0), 0), 0), s(0)), s(0))[ ]^n[ ] by Narrowing at position: [0,0,0,0] intermediate steps: Instantiation - Instantiation U10^1(f463_out1(s(s(y0))), x0)[ ]^n[ ] -> U8^1(U5(U12(U6(f312_in(y0), y0), y0), s(y0)), s(y0))[ ]^n[ ] by Rewrite t with the rewrite sequence : [([0,0],f296_in(T8) -> U12(f300_in(T8), T8)), ([0,0,0],f300_in(T12) -> U6(f312_in(T12), T12))] U10^1(f463_out1(s(s(y0))), x0)[ ]^n[ ] -> U8^1(U5(f296_in(y0), s(y0)), s(y0))[ ]^n[ ] by Narrowing at position: [] intermediate steps: Instantiation - Instantiation U10^1(f463_out1(T23), T5)[ ]^n[ ] -> F39_IN(T23)[ ]^n[ ] by Rule from TRS P F39_IN(s(s(y0)))[ ]^n[ ] -> U8^1(U5(f296_in(y0), s(y0)), s(y0))[ ]^n[ ] by Narrowing at position: [0] intermediate steps: Instantiation F39_IN(s(x0))[ ]^n[ ] -> U8^1(f202_in(x0), x0)[ ]^n[ ] by Narrowing at position: [] intermediate steps: Instantiation F39_IN(s(T4))[ ]^n[ ] -> F131_IN(T4)[ ]^n[ ] by Rule from TRS P intermediate steps: Instantiation - Instantiation F131_IN(T4)[ ]^n[ ] -> U8^1(f202_in(T4), T4)[ ]^n[ ] by Rule from TRS P intermediate steps: Instantiation f202_in(s(T8))[ ]^n[ ] -> U5(f296_in(T8), s(T8))[ ]^n[ ] by Rule from TRS R f312_in(0)[ ]^n[ ] -> f312_out1(0)[ ]^n[ ] by Rule from TRS R intermediate steps: Instantiation - Instantiation - Instantiation - Instantiation U8^1(f202_out1(T5), T4)[ ]^n[ ] -> F203_IN(T5)[ ]^n[ ] by Rule from TRS P intermediate steps: Instantiation - Instantiation F203_IN(T5)[ ]^n[ ] -> U10^1(f463_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": 41, "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": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "391": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "152": { "goal": [{ "clause": -1, "scope": -1, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "395": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T19) X47)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": ["X47"], "exprvars": [] } }, "396": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "310": { "goal": [{ "clause": 2, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "399": { "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": [] } }, "158": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (double T5 X7) (f X7))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "282": { "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": [] } }, "283": { "goal": [{ "clause": 6, "scope": 2, "term": "(half (s T4) X6)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": ["X6"], "exprvars": [] } }, "287": { "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": [] } }, "288": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "400": { "goal": [{ "clause": 5, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "401": { "goal": [{ "clause": 6, "scope": 6, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "447": { "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": [] } }, "129": { "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": [] } }, "448": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "328": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "329": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "292": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "293": { "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": [] } }, "370": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "371": { "goal": [{ "clause": -1, "scope": -1, "term": "(half T16 X20)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T16"], "free": ["X20"], "exprvars": [] } }, "130": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "295": { "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": [] } }, "330": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "374": { "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": [] } }, "451": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "298": { "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": [] } }, "331": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T15) X38)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T15"], "free": ["X38"], "exprvars": [] } }, "452": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T23"], "free": [], "exprvars": [] } }, "299": { "goal": [{ "clause": 2, "scope": 3, "term": "(pred (s (s T8)) X18)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T8"], "free": ["X18"], "exprvars": [] } }, "332": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "376": { "goal": [{ "clause": 0, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "453": { "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": [] } }, "377": { "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": [] } }, "454": { "goal": [{ "clause": 3, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "378": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "455": { "goal": [{ "clause": 4, "scope": 7, "term": "(double T5 X7)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T5"], "free": ["X7"], "exprvars": [] } }, "456": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "457": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "458": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "459": { "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": [] } }, "419": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "380": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "381": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "383": { "goal": [{ "clause": 1, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "460": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "461": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T26) X70)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T26"], "free": ["X70"], "exprvars": [] } }, "385": { "goal": [{ "clause": 2, "scope": 5, "term": "(pred T9 X19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T9"], "free": ["X19"], "exprvars": [] } }, "462": { "goal": [{ "clause": -1, "scope": -1, "term": "(double T27 X71)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T27"], "free": ["X71"], "exprvars": [] } }, "420": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "389": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "302": { "goal": [{ "clause": -1, "scope": -1, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "423": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "307": { "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": [] } }, "308": { "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": [] } }, "309": { "goal": [{ "clause": 1, "scope": 4, "term": "(pred (s T12) X29)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T12"], "free": ["X29"], "exprvars": [] } }, "41": { "goal": [{ "clause": -1, "scope": -1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "42": { "goal": [{ "clause": 7, "scope": 1, "term": "(f T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 41, "to": 42, "label": "CASE" }, { "from": 42, "to": 129, "label": "EVAL with clause\nf(s(X5)) :- ','(half(s(X5), X6), ','(double(X6, X7), f(X7))).\nand substitutionX5 -> T4,\nT1 -> s(T4)" }, { "from": 42, "to": 130, "label": "EVAL-BACKTRACK" }, { "from": 129, "to": 152, "label": "SPLIT 1" }, { "from": 129, "to": 158, "label": "SPLIT 2\nnew knowledge:\nT4 is ground\nT5 is ground\nreplacements:X6 -> T5" }, { "from": 152, "to": 282, "label": "CASE" }, { "from": 158, "to": 451, "label": "SPLIT 1" }, { "from": 158, "to": 452, "label": "SPLIT 2\nnew knowledge:\nT5 is ground\nT23 is ground\nreplacements:X7 -> T23" }, { "from": 282, "to": 283, "label": "BACKTRACK\nfor clause: half(0, 0)because of non-unification" }, { "from": 283, "to": 287, "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": 283, "to": 288, "label": "EVAL-BACKTRACK" }, { "from": 287, "to": 292, "label": "SPLIT 1" }, { "from": 287, "to": 293, "label": "SPLIT 2\nnew knowledge:\nT8 is ground\nT9 is ground\nreplacements:X18 -> T9" }, { "from": 292, "to": 295, "label": "CASE" }, { "from": 293, "to": 370, "label": "SPLIT 1" }, { "from": 293, "to": 371, "label": "SPLIT 2\nnew knowledge:\nT9 is ground\nT16 is ground\nreplacements:X19 -> T16" }, { "from": 295, "to": 298, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 298, "to": 299, "label": "BACKTRACK\nfor clause: pred(s(0), 0)because of non-unification" }, { "from": 299, "to": 302, "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": 302, "to": 307, "label": "CASE" }, { "from": 307, "to": 308, "label": "BACKTRACK\nfor clause: pred(0, 0)because of non-unification" }, { "from": 308, "to": 309, "label": "PARALLEL" }, { "from": 308, "to": 310, "label": "PARALLEL" }, { "from": 309, "to": 328, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT12 -> 0,\nX29 -> 0" }, { "from": 309, "to": 329, "label": "EVAL-BACKTRACK" }, { "from": 310, "to": 331, "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": 310, "to": 332, "label": "EVAL-BACKTRACK" }, { "from": 328, "to": 330, "label": "SUCCESS" }, { "from": 331, "to": 302, "label": "INSTANCE with matching:\nT12 -> T15\nX29 -> X38" }, { "from": 370, "to": 374, "label": "CASE" }, { "from": 371, "to": 399, "label": "CASE" }, { "from": 374, "to": 376, "label": "PARALLEL" }, { "from": 374, "to": 377, "label": "PARALLEL" }, { "from": 376, "to": 378, "label": "EVAL with clause\npred(0, 0).\nand substitutionT9 -> 0,\nX19 -> 0" }, { "from": 376, "to": 380, "label": "EVAL-BACKTRACK" }, { "from": 377, "to": 383, "label": "PARALLEL" }, { "from": 377, "to": 385, "label": "PARALLEL" }, { "from": 378, "to": 381, "label": "SUCCESS" }, { "from": 383, "to": 389, "label": "EVAL with clause\npred(s(0), 0).\nand substitutionT9 -> s(0),\nX19 -> 0" }, { "from": 383, "to": 390, "label": "EVAL-BACKTRACK" }, { "from": 385, "to": 395, "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": 385, "to": 396, "label": "EVAL-BACKTRACK" }, { "from": 389, "to": 391, "label": "SUCCESS" }, { "from": 395, "to": 370, "label": "INSTANCE with matching:\nT9 -> s(T19)\nX19 -> X47" }, { "from": 399, "to": 400, "label": "PARALLEL" }, { "from": 399, "to": 401, "label": "PARALLEL" }, { "from": 400, "to": 419, "label": "EVAL with clause\nhalf(0, 0).\nand substitutionT16 -> 0,\nX20 -> 0" }, { "from": 400, "to": 420, "label": "EVAL-BACKTRACK" }, { "from": 401, "to": 447, "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": 401, "to": 448, "label": "EVAL-BACKTRACK" }, { "from": 419, "to": 423, "label": "SUCCESS" }, { "from": 447, "to": 287, "label": "INSTANCE with matching:\nT8 -> T22\nX18 -> X58\nX19 -> X59\nX20 -> X60" }, { "from": 451, "to": 453, "label": "CASE" }, { "from": 452, "to": 41, "label": "INSTANCE with matching:\nT1 -> T23" }, { "from": 453, "to": 454, "label": "PARALLEL" }, { "from": 453, "to": 455, "label": "PARALLEL" }, { "from": 454, "to": 456, "label": "EVAL with clause\ndouble(0, 0).\nand substitutionT5 -> 0,\nX7 -> 0" }, { "from": 454, "to": 457, "label": "EVAL-BACKTRACK" }, { "from": 455, "to": 459, "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": 455, "to": 460, "label": "EVAL-BACKTRACK" }, { "from": 456, "to": 458, "label": "SUCCESS" }, { "from": 459, "to": 461, "label": "SPLIT 1" }, { "from": 459, "to": 462, "label": "SPLIT 2\nnew knowledge:\nT26 is ground\nT27 is ground\nreplacements:X70 -> T27" }, { "from": 461, "to": 370, "label": "INSTANCE with matching:\nT9 -> s(T26)\nX19 -> X70" }, { "from": 462, "to": 451, "label": "INSTANCE with matching:\nT5 -> T27\nX7 -> X71" } ], "type": "Graph" } } ---------------------------------------- (190) Complex Obligation (AND) ---------------------------------------- (191) Obligation: Rules: f374_in(T9) -> f376_in(T9) :|: TRUE f374_in(x) -> f377_in(x) :|: TRUE f377_out(x1) -> f374_out(x1) :|: TRUE f376_out(x2) -> f374_out(x2) :|: TRUE f385_in(s(s(T19))) -> f395_in(T19) :|: TRUE f385_in(x3) -> f396_in :|: TRUE f395_out(x4) -> f385_out(s(s(x4))) :|: TRUE f396_out -> f385_out(x5) :|: TRUE f370_out(s(x6)) -> f395_out(x6) :|: TRUE f395_in(x7) -> f370_in(s(x7)) :|: TRUE f377_in(x8) -> f385_in(x8) :|: TRUE f385_out(x9) -> f377_out(x9) :|: TRUE f383_out(x10) -> f377_out(x10) :|: TRUE f377_in(x11) -> f383_in(x11) :|: TRUE f374_out(x12) -> f370_out(x12) :|: TRUE f370_in(x13) -> f374_in(x13) :|: TRUE f42_out(T1) -> f41_out(T1) :|: TRUE f41_in(x14) -> f42_in(x14) :|: TRUE f42_in(x15) -> f130_in :|: TRUE f129_out(T4) -> f42_out(s(T4)) :|: TRUE f42_in(s(x16)) -> f129_in(x16) :|: TRUE f130_out -> f42_out(x17) :|: TRUE f152_out(x18) -> f158_in(x19) :|: TRUE f129_in(x20) -> f152_in(x20) :|: TRUE f158_out(x21) -> f129_out(x22) :|: TRUE f158_in(T5) -> f451_in(T5) :|: TRUE f451_out(x23) -> f452_in(x24) :|: TRUE f452_out(x25) -> f158_out(x26) :|: TRUE f451_in(x27) -> f453_in(x27) :|: TRUE f453_out(x28) -> f451_out(x28) :|: TRUE f455_out(x29) -> f453_out(x29) :|: TRUE f453_in(x30) -> f455_in(x30) :|: TRUE f454_out(x31) -> f453_out(x31) :|: TRUE f453_in(x32) -> f454_in(x32) :|: TRUE f460_out -> f455_out(x33) :|: TRUE f455_in(s(T26)) -> f459_in(T26) :|: TRUE f459_out(x34) -> f455_out(s(x34)) :|: TRUE f455_in(x35) -> f460_in :|: TRUE f462_out(x36) -> f459_out(x37) :|: TRUE f459_in(x38) -> f461_in(x38) :|: TRUE f461_out(x39) -> f462_in(x40) :|: TRUE f461_in(x41) -> f370_in(s(x41)) :|: TRUE f370_out(s(x42)) -> f461_out(x42) :|: TRUE f282_out(x43) -> f152_out(x43) :|: TRUE f152_in(x44) -> f282_in(x44) :|: TRUE f282_in(x45) -> f283_in(x45) :|: TRUE f283_out(x46) -> f282_out(x46) :|: TRUE f287_out(T8) -> f283_out(s(T8)) :|: TRUE f283_in(x47) -> f288_in :|: TRUE f288_out -> f283_out(x48) :|: TRUE f283_in(s(x49)) -> f287_in(x49) :|: TRUE f292_out(x50) -> f293_in(x51) :|: TRUE f293_out(x52) -> f287_out(x53) :|: TRUE f287_in(x54) -> f292_in(x54) :|: TRUE f371_out(x55) -> f293_out(x56) :|: TRUE f370_out(x57) -> f371_in(x58) :|: TRUE f293_in(x59) -> f370_in(x59) :|: TRUE Start term: f41_in(T1) ---------------------------------------- (192) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (193) TRUE ---------------------------------------- (194) Obligation: Rules: f378_in -> f378_out :|: TRUE f455_out(T5) -> f453_out(T5) :|: TRUE f453_in(x) -> f455_in(x) :|: TRUE f454_out(x1) -> f453_out(x1) :|: TRUE f453_in(x2) -> f454_in(x2) :|: TRUE f377_in(T9) -> f385_in(T9) :|: TRUE f385_out(x3) -> f377_out(x3) :|: TRUE f383_out(x4) -> f377_out(x4) :|: TRUE f377_in(x5) -> f383_in(x5) :|: TRUE f462_in(T27) -> f451_in(T27) :|: TRUE f451_out(x6) -> f462_out(x6) :|: TRUE f451_in(x7) -> f453_in(x7) :|: TRUE f453_out(x8) -> f451_out(x8) :|: TRUE f460_out -> f455_out(x9) :|: TRUE f455_in(s(T26)) -> f459_in(T26) :|: TRUE f459_out(x10) -> f455_out(s(x10)) :|: TRUE f455_in(x11) -> f460_in :|: TRUE f374_in(x12) -> f376_in(x12) :|: TRUE f374_in(x13) -> f377_in(x13) :|: TRUE f377_out(x14) -> f374_out(x14) :|: TRUE f376_out(x15) -> f374_out(x15) :|: TRUE f385_in(s(s(T19))) -> f395_in(T19) :|: TRUE f385_in(x16) -> f396_in :|: TRUE f395_out(x17) -> f385_out(s(s(x17))) :|: TRUE f396_out -> f385_out(x18) :|: TRUE f370_out(s(x19)) -> f395_out(x19) :|: TRUE f395_in(x20) -> f370_in(s(x20)) :|: TRUE f390_out -> f383_out(x21) :|: TRUE f383_in(x22) -> f390_in :|: TRUE f383_in(s(0)) -> f389_in :|: TRUE f389_out -> f383_out(s(0)) :|: TRUE f374_out(x23) -> f370_out(x23) :|: TRUE f370_in(x24) -> f374_in(x24) :|: TRUE f376_in(0) -> f378_in :|: TRUE f378_out -> f376_out(0) :|: TRUE f376_in(x25) -> f380_in :|: TRUE f380_out -> f376_out(x26) :|: TRUE f462_out(x27) -> f459_out(x28) :|: TRUE f459_in(x29) -> f461_in(x29) :|: TRUE f461_out(x30) -> f462_in(x31) :|: TRUE f461_in(x32) -> f370_in(s(x32)) :|: TRUE f370_out(s(x33)) -> f461_out(x33) :|: TRUE f389_in -> f389_out :|: TRUE f42_out(T1) -> f41_out(T1) :|: TRUE f41_in(x34) -> f42_in(x34) :|: TRUE f42_in(x35) -> f130_in :|: TRUE f129_out(T4) -> f42_out(s(T4)) :|: TRUE f42_in(s(x36)) -> f129_in(x36) :|: TRUE f130_out -> f42_out(x37) :|: TRUE f152_out(x38) -> f158_in(x39) :|: TRUE f129_in(x40) -> f152_in(x40) :|: TRUE f158_out(x41) -> f129_out(x42) :|: TRUE f158_in(x43) -> f451_in(x43) :|: TRUE f451_out(x44) -> f452_in(x45) :|: TRUE f452_out(x46) -> f158_out(x47) :|: TRUE Start term: f41_in(T1) ---------------------------------------- (195) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (196) TRUE ---------------------------------------- (197) Obligation: Rules: f302_out(T15) -> f331_out(T15) :|: TRUE f331_in(x) -> f302_in(x) :|: TRUE f310_out(T12) -> f308_out(T12) :|: TRUE f308_in(x1) -> f310_in(x1) :|: TRUE f309_out(x2) -> f308_out(x2) :|: TRUE f308_in(x3) -> f309_in(x3) :|: TRUE f307_out(x4) -> f302_out(x4) :|: TRUE f302_in(x5) -> f307_in(x5) :|: TRUE f310_in(x6) -> f332_in :|: TRUE f310_in(s(x7)) -> f331_in(x7) :|: TRUE f331_out(x8) -> f310_out(s(x8)) :|: TRUE f332_out -> f310_out(x9) :|: TRUE f308_out(x10) -> f307_out(x10) :|: TRUE f307_in(x11) -> f308_in(x11) :|: TRUE f42_out(T1) -> f41_out(T1) :|: TRUE f41_in(x12) -> f42_in(x12) :|: TRUE f42_in(x13) -> f130_in :|: TRUE f129_out(T4) -> f42_out(s(T4)) :|: TRUE f42_in(s(x14)) -> f129_in(x14) :|: TRUE f130_out -> f42_out(x15) :|: TRUE f152_out(x16) -> f158_in(x17) :|: TRUE f129_in(x18) -> f152_in(x18) :|: TRUE f158_out(x19) -> f129_out(x20) :|: TRUE f282_out(x21) -> f152_out(x21) :|: TRUE f152_in(x22) -> f282_in(x22) :|: TRUE f282_in(x23) -> f283_in(x23) :|: TRUE f283_out(x24) -> f282_out(x24) :|: TRUE f287_out(T8) -> f283_out(s(T8)) :|: TRUE f283_in(x25) -> f288_in :|: TRUE f288_out -> f283_out(x26) :|: TRUE f283_in(s(x27)) -> f287_in(x27) :|: TRUE f292_out(x28) -> f293_in(x29) :|: TRUE f293_out(x30) -> f287_out(x31) :|: TRUE f287_in(x32) -> f292_in(x32) :|: TRUE f295_out(x33) -> f292_out(x33) :|: TRUE f292_in(x34) -> f295_in(x34) :|: TRUE f298_out(x35) -> f295_out(x35) :|: TRUE f295_in(x36) -> f298_in(x36) :|: TRUE f298_in(x37) -> f299_in(x37) :|: TRUE f299_out(x38) -> f298_out(x38) :|: TRUE f302_out(x39) -> f299_out(x39) :|: TRUE f299_in(x40) -> f302_in(x40) :|: TRUE Start term: f41_in(T1) ---------------------------------------- (198) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f331_in(x) -> f302_in(x) :|: TRUE f308_in(x1) -> f310_in(x1) :|: TRUE f302_in(x5) -> f307_in(x5) :|: TRUE f310_in(s(x7)) -> f331_in(x7) :|: TRUE f307_in(x11) -> f308_in(x11) :|: TRUE ---------------------------------------- (199) Obligation: Rules: f331_in(x) -> f302_in(x) :|: TRUE f308_in(x1) -> f310_in(x1) :|: TRUE f302_in(x5) -> f307_in(x5) :|: TRUE f310_in(s(x7)) -> f331_in(x7) :|: TRUE f307_in(x11) -> f308_in(x11) :|: TRUE ---------------------------------------- (200) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (201) Obligation: Rules: f308_in(s(x7:0)) -> f308_in(x7:0) :|: TRUE ---------------------------------------- (202) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (203) Obligation: Rules: f308_in(s(x7:0)) -> f308_in(x7:0) :|: TRUE ---------------------------------------- (204) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f308_in(s(x7:0)) -> f308_in(x7:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (205) Obligation: Termination digraph: Nodes: (1) f308_in(s(x7:0)) -> f308_in(x7:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (206) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f308_in(VARIABLE) s(VARIABLE) Removed predefined arithmetic. ---------------------------------------- (207) Obligation: Rules: f308_in(s(x7:0)) -> f308_in(x7: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: f308_in(s(x7:0)) -> f308_in(x7: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: *f308_in(s(x7:0)) -> f308_in(x7:0) The graph contains the following edges 1 > 1 ---------------------------------------- (211) YES ---------------------------------------- (212) Obligation: Rules: f295_out(T8) -> f292_out(T8) :|: TRUE f292_in(x) -> f295_in(x) :|: TRUE f298_out(x1) -> f295_out(x1) :|: TRUE f295_in(x2) -> f298_in(x2) :|: TRUE f374_in(T9) -> f376_in(T9) :|: TRUE f374_in(x3) -> f377_in(x3) :|: TRUE f377_out(x4) -> f374_out(x4) :|: TRUE f376_out(x5) -> f374_out(x5) :|: TRUE f302_out(T15) -> f331_out(T15) :|: TRUE f331_in(x6) -> f302_in(x6) :|: TRUE f370_out(s(T19)) -> f395_out(T19) :|: TRUE f395_in(x7) -> f370_in(s(x7)) :|: TRUE f371_in(T16) -> f399_in(T16) :|: TRUE f399_out(x8) -> f371_out(x8) :|: TRUE f298_in(x9) -> f299_in(x9) :|: TRUE f299_out(x10) -> f298_out(x10) :|: TRUE f374_out(x11) -> f370_out(x11) :|: TRUE f370_in(x12) -> f374_in(x12) :|: TRUE f292_out(x13) -> f293_in(x14) :|: TRUE f293_out(x15) -> f287_out(x16) :|: TRUE f287_in(x17) -> f292_in(x17) :|: TRUE f307_out(T12) -> f302_out(T12) :|: TRUE f302_in(x18) -> f307_in(x18) :|: TRUE f401_in(x19) -> f448_in :|: TRUE f401_in(s(s(T22))) -> f447_in(T22) :|: TRUE f448_out -> f401_out(x20) :|: TRUE f447_out(x21) -> f401_out(s(s(x21))) :|: TRUE f310_in(x22) -> f332_in :|: TRUE f310_in(s(x23)) -> f331_in(x23) :|: TRUE f331_out(x24) -> f310_out(s(x24)) :|: TRUE f332_out -> f310_out(x25) :|: TRUE f308_out(x26) -> f307_out(x26) :|: TRUE f307_in(x27) -> f308_in(x27) :|: TRUE f328_out -> f309_out(0) :|: TRUE f309_in(x28) -> f329_in :|: TRUE f329_out -> f309_out(x29) :|: TRUE f309_in(0) -> f328_in :|: TRUE f371_out(x30) -> f293_out(x31) :|: TRUE f370_out(x32) -> f371_in(x33) :|: TRUE f293_in(x34) -> f370_in(x34) :|: TRUE f378_in -> f378_out :|: TRUE f399_in(x35) -> f401_in(x35) :|: TRUE f401_out(x36) -> f399_out(x36) :|: TRUE f399_in(x37) -> f400_in(x37) :|: TRUE f400_out(x38) -> f399_out(x38) :|: TRUE f328_in -> f328_out :|: TRUE f377_in(x39) -> f385_in(x39) :|: TRUE f385_out(x40) -> f377_out(x40) :|: TRUE f383_out(x41) -> f377_out(x41) :|: TRUE f377_in(x42) -> f383_in(x42) :|: TRUE f310_out(x43) -> f308_out(x43) :|: TRUE f308_in(x44) -> f310_in(x44) :|: TRUE f309_out(x45) -> f308_out(x45) :|: TRUE f308_in(x46) -> f309_in(x46) :|: TRUE f287_out(x47) -> f447_out(x47) :|: TRUE f447_in(x48) -> f287_in(x48) :|: TRUE f385_in(s(s(x49))) -> f395_in(x49) :|: TRUE f385_in(x50) -> f396_in :|: TRUE f395_out(x51) -> f385_out(s(s(x51))) :|: TRUE f396_out -> f385_out(x52) :|: TRUE f390_out -> f383_out(x53) :|: TRUE f383_in(x54) -> f390_in :|: TRUE f383_in(s(0)) -> f389_in :|: TRUE f389_out -> f383_out(s(0)) :|: TRUE f302_out(x55) -> f299_out(x55) :|: TRUE f299_in(x56) -> f302_in(x56) :|: TRUE f376_in(0) -> f378_in :|: TRUE f378_out -> f376_out(0) :|: TRUE f376_in(x57) -> f380_in :|: TRUE f380_out -> f376_out(x58) :|: TRUE f389_in -> f389_out :|: TRUE f42_out(T1) -> f41_out(T1) :|: TRUE f41_in(x59) -> f42_in(x59) :|: TRUE f42_in(x60) -> f130_in :|: TRUE f129_out(T4) -> f42_out(s(T4)) :|: TRUE f42_in(s(x61)) -> f129_in(x61) :|: TRUE f130_out -> f42_out(x62) :|: TRUE f152_out(x63) -> f158_in(x64) :|: TRUE f129_in(x65) -> f152_in(x65) :|: TRUE f158_out(x66) -> f129_out(x67) :|: TRUE f282_out(x68) -> f152_out(x68) :|: TRUE f152_in(x69) -> f282_in(x69) :|: TRUE f282_in(x70) -> f283_in(x70) :|: TRUE f283_out(x71) -> f282_out(x71) :|: TRUE f287_out(x72) -> f283_out(s(x72)) :|: TRUE f283_in(x73) -> f288_in :|: TRUE f288_out -> f283_out(x74) :|: TRUE f283_in(s(x75)) -> f287_in(x75) :|: TRUE Start term: f41_in(T1) ---------------------------------------- (213) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f295_out(T8) -> f292_out(T8) :|: TRUE f292_in(x) -> f295_in(x) :|: TRUE f298_out(x1) -> f295_out(x1) :|: TRUE f295_in(x2) -> f298_in(x2) :|: TRUE f374_in(T9) -> f376_in(T9) :|: TRUE f374_in(x3) -> f377_in(x3) :|: TRUE f377_out(x4) -> f374_out(x4) :|: TRUE f376_out(x5) -> f374_out(x5) :|: TRUE f302_out(T15) -> f331_out(T15) :|: TRUE f331_in(x6) -> f302_in(x6) :|: TRUE f370_out(s(T19)) -> f395_out(T19) :|: TRUE f395_in(x7) -> f370_in(s(x7)) :|: TRUE f371_in(T16) -> f399_in(T16) :|: TRUE f298_in(x9) -> f299_in(x9) :|: TRUE f299_out(x10) -> f298_out(x10) :|: TRUE f374_out(x11) -> f370_out(x11) :|: TRUE f370_in(x12) -> f374_in(x12) :|: TRUE f292_out(x13) -> f293_in(x14) :|: TRUE f287_in(x17) -> f292_in(x17) :|: TRUE f307_out(T12) -> f302_out(T12) :|: TRUE f302_in(x18) -> f307_in(x18) :|: TRUE f401_in(s(s(T22))) -> f447_in(T22) :|: TRUE f310_in(s(x23)) -> f331_in(x23) :|: TRUE f331_out(x24) -> f310_out(s(x24)) :|: TRUE f308_out(x26) -> f307_out(x26) :|: TRUE f307_in(x27) -> f308_in(x27) :|: TRUE f328_out -> f309_out(0) :|: TRUE f309_in(0) -> f328_in :|: TRUE f370_out(x32) -> f371_in(x33) :|: TRUE f293_in(x34) -> f370_in(x34) :|: TRUE f378_in -> f378_out :|: TRUE f399_in(x35) -> f401_in(x35) :|: TRUE f328_in -> f328_out :|: TRUE f377_in(x39) -> f385_in(x39) :|: TRUE f385_out(x40) -> f377_out(x40) :|: TRUE f383_out(x41) -> f377_out(x41) :|: TRUE f377_in(x42) -> f383_in(x42) :|: TRUE f310_out(x43) -> f308_out(x43) :|: TRUE f308_in(x44) -> f310_in(x44) :|: TRUE f309_out(x45) -> f308_out(x45) :|: TRUE f308_in(x46) -> f309_in(x46) :|: TRUE f447_in(x48) -> f287_in(x48) :|: TRUE f385_in(s(s(x49))) -> f395_in(x49) :|: TRUE f395_out(x51) -> f385_out(s(s(x51))) :|: TRUE f383_in(s(0)) -> f389_in :|: TRUE f389_out -> f383_out(s(0)) :|: TRUE f302_out(x55) -> f299_out(x55) :|: TRUE f299_in(x56) -> f302_in(x56) :|: TRUE f376_in(0) -> f378_in :|: TRUE f378_out -> f376_out(0) :|: TRUE f389_in -> f389_out :|: TRUE ---------------------------------------- (214) Obligation: Rules: f295_out(T8) -> f292_out(T8) :|: TRUE f292_in(x) -> f295_in(x) :|: TRUE f298_out(x1) -> f295_out(x1) :|: TRUE f295_in(x2) -> f298_in(x2) :|: TRUE f374_in(T9) -> f376_in(T9) :|: TRUE f374_in(x3) -> f377_in(x3) :|: TRUE f377_out(x4) -> f374_out(x4) :|: TRUE f376_out(x5) -> f374_out(x5) :|: TRUE f302_out(T15) -> f331_out(T15) :|: TRUE f331_in(x6) -> f302_in(x6) :|: TRUE f370_out(s(T19)) -> f395_out(T19) :|: TRUE f395_in(x7) -> f370_in(s(x7)) :|: TRUE f371_in(T16) -> f399_in(T16) :|: TRUE f298_in(x9) -> f299_in(x9) :|: TRUE f299_out(x10) -> f298_out(x10) :|: TRUE f374_out(x11) -> f370_out(x11) :|: TRUE f370_in(x12) -> f374_in(x12) :|: TRUE f292_out(x13) -> f293_in(x14) :|: TRUE f287_in(x17) -> f292_in(x17) :|: TRUE f307_out(T12) -> f302_out(T12) :|: TRUE f302_in(x18) -> f307_in(x18) :|: TRUE f401_in(s(s(T22))) -> f447_in(T22) :|: TRUE f310_in(s(x23)) -> f331_in(x23) :|: TRUE f331_out(x24) -> f310_out(s(x24)) :|: TRUE f308_out(x26) -> f307_out(x26) :|: TRUE f307_in(x27) -> f308_in(x27) :|: TRUE f328_out -> f309_out(0) :|: TRUE f309_in(0) -> f328_in :|: TRUE f370_out(x32) -> f371_in(x33) :|: TRUE f293_in(x34) -> f370_in(x34) :|: TRUE f378_in -> f378_out :|: TRUE f399_in(x35) -> f401_in(x35) :|: TRUE f328_in -> f328_out :|: TRUE f377_in(x39) -> f385_in(x39) :|: TRUE f385_out(x40) -> f377_out(x40) :|: TRUE f383_out(x41) -> f377_out(x41) :|: TRUE f377_in(x42) -> f383_in(x42) :|: TRUE f310_out(x43) -> f308_out(x43) :|: TRUE f308_in(x44) -> f310_in(x44) :|: TRUE f309_out(x45) -> f308_out(x45) :|: TRUE f308_in(x46) -> f309_in(x46) :|: TRUE f447_in(x48) -> f287_in(x48) :|: TRUE f385_in(s(s(x49))) -> f395_in(x49) :|: TRUE f395_out(x51) -> f385_out(s(s(x51))) :|: TRUE f383_in(s(0)) -> f389_in :|: TRUE f389_out -> f383_out(s(0)) :|: TRUE f302_out(x55) -> f299_out(x55) :|: TRUE f299_in(x56) -> f302_in(x56) :|: TRUE f376_in(0) -> f378_in :|: TRUE f378_out -> f376_out(0) :|: TRUE f389_in -> f389_out :|: TRUE ---------------------------------------- (215) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (216) Obligation: Rules: f308_out(x26:0) -> f374_in(x14:0) :|: TRUE f308_out(x) -> f308_out(s(x)) :|: TRUE f308_in(s(x23:0)) -> f308_in(x23:0) :|: TRUE f374_in(s(s(x49:0))) -> f374_in(s(x49:0)) :|: TRUE f308_in(cons_0) -> f308_out(0) :|: TRUE && cons_0 = 0 f374_in(x1) -> f370_out(0) :|: TRUE && x1 = 0 f370_out(s(T19:0)) -> f370_out(s(s(T19:0))) :|: TRUE f370_out(x32:0) -> f308_in(T22:0) :|: TRUE f374_in(s(x2)) -> f370_out(s(0)) :|: TRUE && x2 = 0 ---------------------------------------- (217) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (218) Obligation: Rules: f308_out(x26:0) -> f374_in(x14:0) :|: TRUE f308_out(x) -> f308_out(s(x)) :|: TRUE f308_in(s(x23:0)) -> f308_in(x23:0) :|: TRUE f374_in(s(s(x49:0))) -> f374_in(s(x49:0)) :|: TRUE f308_in(cons_0) -> f308_out(0) :|: TRUE && cons_0 = 0 f374_in(x1) -> f370_out(0) :|: TRUE && x1 = 0 f370_out(s(T19:0)) -> f370_out(s(s(T19:0))) :|: TRUE f370_out(x32:0) -> f308_in(T22:0) :|: TRUE f374_in(s(x2)) -> f370_out(s(0)) :|: TRUE && x2 = 0 ---------------------------------------- (219) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f308_out(x26:0) -> f374_in(x14:0) :|: TRUE (2) f308_out(x) -> f308_out(s(x)) :|: TRUE (3) f308_in(s(x23:0)) -> f308_in(x23:0) :|: TRUE (4) f374_in(s(s(x49:0))) -> f374_in(s(x49:0)) :|: TRUE (5) f308_in(cons_0) -> f308_out(0) :|: TRUE && cons_0 = 0 (6) f374_in(x1) -> f370_out(0) :|: TRUE && x1 = 0 (7) f370_out(s(T19:0)) -> f370_out(s(s(T19:0))) :|: TRUE (8) f370_out(x32:0) -> f308_in(T22:0) :|: TRUE (9) f374_in(s(x2)) -> f370_out(s(0)) :|: TRUE && x2 = 0 Arcs: (1) -> (4), (6), (9) (2) -> (1), (2) (3) -> (3), (5) (4) -> (4), (9) (5) -> (1), (2) (6) -> (8) (7) -> (7), (8) (8) -> (3), (5) (9) -> (7), (8) This digraph is fully evaluated! ---------------------------------------- (220) Obligation: Termination digraph: Nodes: (1) f308_out(x26:0) -> f374_in(x14:0) :|: TRUE (2) f308_out(x) -> f308_out(s(x)) :|: TRUE (3) f308_in(cons_0) -> f308_out(0) :|: TRUE && cons_0 = 0 (4) f308_in(s(x23:0)) -> f308_in(x23:0) :|: TRUE (5) f370_out(x32:0) -> f308_in(T22:0) :|: TRUE (6) f370_out(s(T19:0)) -> f370_out(s(s(T19:0))) :|: TRUE (7) f374_in(s(x2)) -> f370_out(s(0)) :|: TRUE && x2 = 0 (8) f374_in(s(s(x49:0))) -> f374_in(s(x49:0)) :|: TRUE (9) f374_in(x1) -> f370_out(0) :|: TRUE && x1 = 0 Arcs: (1) -> (7), (8), (9) (2) -> (1), (2) (3) -> (1), (2) (4) -> (3), (4) (5) -> (3), (4) (6) -> (5), (6) (7) -> (5), (6) (8) -> (7), (8) (9) -> (5) This digraph is fully evaluated! ---------------------------------------- (221) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (222) Obligation: Rules: f374_in(s(s(x49:0:0))) -> f374_in(s(x49:0:0)) :|: TRUE f374_in(s(cons_0)) -> f370_out(s(0)) :|: TRUE && cons_0 = 0 f308_in(x) -> f308_out(0) :|: TRUE && x = 0 f374_in(x1) -> f370_out(0) :|: TRUE && x1 = 0 f370_out(s(T19:0:0)) -> f370_out(s(s(T19:0:0))) :|: TRUE f308_out(x26:0:0) -> f374_in(x14:0:0) :|: TRUE f308_out(x:0) -> f308_out(s(x:0)) :|: TRUE f308_in(s(x23:0:0)) -> f308_in(x23:0:0) :|: TRUE f370_out(x32:0:0) -> f308_in(T22:0:0) :|: TRUE ---------------------------------------- (223) IRSwTToIntTRSProof (SOUND) Applied path-length measure to transform intTRS with terms to intTRS. ---------------------------------------- (224) Obligation: Rules: f374_in(s(s(x))) -> f374_in(s(x)) :|: TRUE f374_in(s(cons_0)) -> f370_out(s(0)) :|: TRUE && cons_0 = 0 f308_in(x1) -> f308_out(0) :|: TRUE && x1 = 0 f374_in(x2) -> f370_out(0) :|: TRUE && x2 = 0 f370_out(s(x4)) -> f370_out(s(s(x4))) :|: TRUE f308_out(x5) -> f374_in(x6) :|: TRUE f308_out(x7) -> f308_out(s(x7)) :|: TRUE f308_in(s(x8)) -> f308_in(x8) :|: TRUE f370_out(x9) -> f308_in(x10) :|: TRUE ---------------------------------------- (225) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (226) Obligation: Rules: f374_in(s(s(x:0))) -> f374_in(s(x:0)) :|: TRUE f374_in(s(cons_0)) -> f370_out(s(0)) :|: TRUE && cons_0 = 0 f308_in(x) -> f308_out(0) :|: TRUE && x = 0 f374_in(x1) -> f370_out(0) :|: TRUE && x1 = 0 f370_out(s(x4:0)) -> f370_out(s(s(x4:0))) :|: TRUE f308_out(x5:0) -> f374_in(x6:0) :|: TRUE f308_out(x7:0) -> f308_out(s(x7:0)) :|: TRUE f308_in(s(x8:0)) -> f308_in(x8:0) :|: TRUE f370_out(x9:0) -> f308_in(x10:0) :|: TRUE ---------------------------------------- (227) Obligation: Rules: f295_out(T8) -> f292_out(T8) :|: TRUE f292_in(x) -> f295_in(x) :|: TRUE f41_out(T23) -> f452_out(T23) :|: TRUE f452_in(x1) -> f41_in(x1) :|: TRUE f298_out(x2) -> f295_out(x2) :|: TRUE f295_in(x3) -> f298_in(x3) :|: TRUE f42_in(T1) -> f130_in :|: TRUE f129_out(T4) -> f42_out(s(T4)) :|: TRUE f42_in(s(x4)) -> f129_in(x4) :|: TRUE f130_out -> f42_out(x5) :|: TRUE f371_in(T16) -> f399_in(T16) :|: TRUE f399_out(x6) -> f371_out(x6) :|: TRUE f374_out(T9) -> f370_out(T9) :|: TRUE f370_in(x7) -> f374_in(x7) :|: TRUE f287_out(x8) -> f283_out(s(x8)) :|: TRUE f283_in(x9) -> f288_in :|: TRUE f288_out -> f283_out(x10) :|: TRUE f283_in(s(x11)) -> f287_in(x11) :|: TRUE f292_out(x12) -> f293_in(x13) :|: TRUE f293_out(x14) -> f287_out(x15) :|: TRUE f287_in(x16) -> f292_in(x16) :|: TRUE f462_out(T27) -> f459_out(T26) :|: TRUE f459_in(x17) -> f461_in(x17) :|: TRUE f461_out(x18) -> f462_in(x19) :|: TRUE f461_in(x20) -> f370_in(s(x20)) :|: TRUE f370_out(s(x21)) -> f461_out(x21) :|: TRUE f307_out(T12) -> f302_out(T12) :|: TRUE f302_in(x22) -> f307_in(x22) :|: TRUE f401_in(x23) -> f448_in :|: TRUE f401_in(s(s(T22))) -> f447_in(T22) :|: TRUE f448_out -> f401_out(x24) :|: TRUE f447_out(x25) -> f401_out(s(s(x25))) :|: TRUE f310_in(x26) -> f332_in :|: TRUE f310_in(s(T15)) -> f331_in(T15) :|: TRUE f331_out(x27) -> f310_out(s(x27)) :|: TRUE f332_out -> f310_out(x28) :|: TRUE f328_out -> f309_out(0) :|: TRUE f309_in(x29) -> f329_in :|: TRUE f329_out -> f309_out(x30) :|: TRUE f309_in(0) -> f328_in :|: TRUE f371_out(x31) -> f293_out(x32) :|: TRUE f370_out(x33) -> f371_in(x34) :|: TRUE f293_in(x35) -> f370_in(x35) :|: TRUE f378_in -> f378_out :|: TRUE f399_in(x36) -> f401_in(x36) :|: TRUE f401_out(x37) -> f399_out(x37) :|: TRUE f399_in(x38) -> f400_in(x38) :|: TRUE f400_out(x39) -> f399_out(x39) :|: TRUE f328_in -> f328_out :|: TRUE f377_in(x40) -> f385_in(x40) :|: TRUE f385_out(x41) -> f377_out(x41) :|: TRUE f383_out(x42) -> f377_out(x42) :|: TRUE f377_in(x43) -> f383_in(x43) :|: TRUE f310_out(x44) -> f308_out(x44) :|: TRUE f308_in(x45) -> f310_in(x45) :|: TRUE f309_out(x46) -> f308_out(x46) :|: TRUE f308_in(x47) -> f309_in(x47) :|: TRUE f42_out(x48) -> f41_out(x48) :|: TRUE f41_in(x49) -> f42_in(x49) :|: TRUE f287_out(x50) -> f447_out(x50) :|: TRUE f447_in(x51) -> f287_in(x51) :|: TRUE f302_out(x52) -> f299_out(x52) :|: TRUE f299_in(x53) -> f302_in(x53) :|: TRUE f152_out(x54) -> f158_in(x55) :|: TRUE f129_in(x56) -> f152_in(x56) :|: TRUE f158_out(x57) -> f129_out(x58) :|: TRUE f376_in(0) -> f378_in :|: TRUE f378_out -> f376_out(0) :|: TRUE f376_in(x59) -> f380_in :|: TRUE f380_out -> f376_out(x60) :|: TRUE f389_in -> f389_out :|: TRUE f419_in -> f419_out :|: TRUE f455_out(T5) -> f453_out(T5) :|: TRUE f453_in(x61) -> f455_in(x61) :|: TRUE f454_out(x62) -> f453_out(x62) :|: TRUE f453_in(x63) -> f454_in(x63) :|: TRUE f282_in(x64) -> f283_in(x64) :|: TRUE f283_out(x65) -> f282_out(x65) :|: TRUE f282_out(x66) -> f152_out(x66) :|: TRUE f152_in(x67) -> f282_in(x67) :|: TRUE f451_in(x68) -> f453_in(x68) :|: TRUE f453_out(x69) -> f451_out(x69) :|: TRUE f374_in(x70) -> f376_in(x70) :|: TRUE f374_in(x71) -> f377_in(x71) :|: TRUE f377_out(x72) -> f374_out(x72) :|: TRUE f376_out(x73) -> f374_out(x73) :|: TRUE f302_out(x74) -> f331_out(x74) :|: TRUE f331_in(x75) -> f302_in(x75) :|: TRUE f457_out -> f454_out(x76) :|: TRUE f454_in(x77) -> f457_in :|: TRUE f454_in(0) -> f456_in :|: TRUE f456_out -> f454_out(0) :|: TRUE f370_out(s(T19)) -> f395_out(T19) :|: TRUE f395_in(x78) -> f370_in(s(x78)) :|: TRUE f298_in(x79) -> f299_in(x79) :|: TRUE f299_out(x80) -> f298_out(x80) :|: TRUE f308_out(x81) -> f307_out(x81) :|: TRUE f307_in(x82) -> f308_in(x82) :|: TRUE f158_in(x83) -> f451_in(x83) :|: TRUE f451_out(x84) -> f452_in(x85) :|: TRUE f452_out(x86) -> f158_out(x87) :|: TRUE f400_in(x88) -> f420_in :|: TRUE f420_out -> f400_out(x89) :|: TRUE f419_out -> f400_out(0) :|: TRUE f400_in(0) -> f419_in :|: TRUE f462_in(x90) -> f451_in(x90) :|: TRUE f451_out(x91) -> f462_out(x91) :|: TRUE f385_in(s(s(x92))) -> f395_in(x92) :|: TRUE f385_in(x93) -> f396_in :|: TRUE f395_out(x94) -> f385_out(s(s(x94))) :|: TRUE f396_out -> f385_out(x95) :|: TRUE f460_out -> f455_out(x96) :|: TRUE f455_in(s(x97)) -> f459_in(x97) :|: TRUE f459_out(x98) -> f455_out(s(x98)) :|: TRUE f455_in(x99) -> f460_in :|: TRUE f390_out -> f383_out(x100) :|: TRUE f383_in(x101) -> f390_in :|: TRUE f383_in(s(0)) -> f389_in :|: TRUE f389_out -> f383_out(s(0)) :|: TRUE f456_in -> f456_out :|: TRUE Start term: f41_in(T1)