MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Left Termination of the query pattern mergesort(a,g) w.r.t. the given Prolog program could not be shown: (0) Prolog (1) UnifyTransformerProof [EQUIVALENT, 0 ms] (2) Prolog (3) PrologToPiTRSProof [SOUND, 0 ms] (4) PiTRS (5) DependencyPairsProof [EQUIVALENT, 22 ms] (6) PiDP (7) DependencyGraphProof [EQUIVALENT, 0 ms] (8) AND (9) PiDP (10) UsableRulesProof [EQUIVALENT, 0 ms] (11) PiDP (12) PiDPToQDPProof [SOUND, 10 ms] (13) QDP (14) QDPSizeChangeProof [EQUIVALENT, 0 ms] (15) YES (16) PiDP (17) UsableRulesProof [EQUIVALENT, 0 ms] (18) PiDP (19) PiDPToQDPProof [SOUND, 0 ms] (20) QDP (21) QDPSizeChangeProof [EQUIVALENT, 0 ms] (22) YES (23) PiDP (24) UsableRulesProof [EQUIVALENT, 0 ms] (25) PiDP (26) PiDPToQDPProof [SOUND, 0 ms] (27) QDP (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] (29) YES (30) PiDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) PiDP (33) PiDPToQDPProof [SOUND, 0 ms] (34) QDP (35) TransformationProof [EQUIVALENT, 0 ms] (36) QDP (37) TransformationProof [EQUIVALENT, 0 ms] (38) QDP (39) QDPQMonotonicMRRProof [EQUIVALENT, 80 ms] (40) QDP (41) QDPQMonotonicMRRProof [EQUIVALENT, 5 ms] (42) QDP (43) DependencyGraphProof [EQUIVALENT, 0 ms] (44) QDP (45) UsableRulesProof [EQUIVALENT, 0 ms] (46) QDP (47) QReductionProof [EQUIVALENT, 0 ms] (48) QDP (49) QDPOrderProof [EQUIVALENT, 15 ms] (50) QDP (51) DependencyGraphProof [EQUIVALENT, 0 ms] (52) TRUE (53) PiDP (54) UsableRulesProof [EQUIVALENT, 0 ms] (55) PiDP (56) PiDPToQDPProof [SOUND, 0 ms] (57) QDP (58) PrologToPiTRSProof [SOUND, 0 ms] (59) PiTRS (60) DependencyPairsProof [EQUIVALENT, 0 ms] (61) PiDP (62) DependencyGraphProof [EQUIVALENT, 0 ms] (63) AND (64) PiDP (65) UsableRulesProof [EQUIVALENT, 0 ms] (66) PiDP (67) PiDPToQDPProof [SOUND, 7 ms] (68) QDP (69) QDPSizeChangeProof [EQUIVALENT, 0 ms] (70) YES (71) PiDP (72) UsableRulesProof [EQUIVALENT, 0 ms] (73) PiDP (74) PiDPToQDPProof [SOUND, 0 ms] (75) QDP (76) QDPSizeChangeProof [EQUIVALENT, 0 ms] (77) YES (78) PiDP (79) UsableRulesProof [EQUIVALENT, 0 ms] (80) PiDP (81) PiDPToQDPProof [SOUND, 0 ms] (82) QDP (83) QDPSizeChangeProof [EQUIVALENT, 0 ms] (84) YES (85) PiDP (86) UsableRulesProof [EQUIVALENT, 0 ms] (87) PiDP (88) PiDPToQDPProof [SOUND, 0 ms] (89) QDP (90) MRRProof [EQUIVALENT, 43 ms] (91) QDP (92) TransformationProof [EQUIVALENT, 0 ms] (93) QDP (94) TransformationProof [EQUIVALENT, 0 ms] (95) QDP (96) QDPQMonotonicMRRProof [EQUIVALENT, 61 ms] (97) QDP (98) UsableRulesProof [EQUIVALENT, 0 ms] (99) QDP (100) QReductionProof [EQUIVALENT, 0 ms] (101) QDP (102) QDPOrderProof [EQUIVALENT, 0 ms] (103) QDP (104) DependencyGraphProof [EQUIVALENT, 0 ms] (105) QDP (106) UsableRulesProof [EQUIVALENT, 0 ms] (107) QDP (108) QReductionProof [EQUIVALENT, 0 ms] (109) QDP (110) PiDP (111) UsableRulesProof [EQUIVALENT, 0 ms] (112) PiDP (113) PrologToTRSTransformerProof [SOUND, 69 ms] (114) QTRS (115) QTRSRRRProof [EQUIVALENT, 273 ms] (116) QTRS (117) DependencyPairsProof [EQUIVALENT, 0 ms] (118) QDP (119) DependencyGraphProof [EQUIVALENT, 0 ms] (120) AND (121) QDP (122) UsableRulesProof [EQUIVALENT, 0 ms] (123) QDP (124) NonTerminationLoopProof [COMPLETE, 0 ms] (125) NO (126) QDP (127) UsableRulesProof [EQUIVALENT, 0 ms] (128) QDP (129) NonTerminationLoopProof [COMPLETE, 0 ms] (130) NO (131) QDP (132) PrologToDTProblemTransformerProof [SOUND, 69 ms] (133) TRIPLES (134) UndefinedPredicateInTriplesTransformerProof [SOUND, 0 ms] (135) TRIPLES (136) TriplesToPiDPProof [SOUND, 61 ms] (137) PiDP (138) DependencyGraphProof [EQUIVALENT, 0 ms] (139) AND (140) PiDP (141) UsableRulesProof [EQUIVALENT, 0 ms] (142) PiDP (143) PiDPToQDPProof [SOUND, 0 ms] (144) QDP (145) QDPSizeChangeProof [EQUIVALENT, 0 ms] (146) YES (147) PiDP (148) UsableRulesProof [EQUIVALENT, 0 ms] (149) PiDP (150) PiDPToQDPProof [SOUND, 0 ms] (151) QDP (152) QDPSizeChangeProof [EQUIVALENT, 0 ms] (153) YES (154) PiDP (155) UsableRulesProof [EQUIVALENT, 0 ms] (156) PiDP (157) PiDPToQDPProof [SOUND, 0 ms] (158) QDP (159) QDPSizeChangeProof [EQUIVALENT, 0 ms] (160) YES (161) PiDP (162) UsableRulesProof [EQUIVALENT, 0 ms] (163) PiDP (164) PiDPToQDPProof [SOUND, 0 ms] (165) QDP (166) TransformationProof [EQUIVALENT, 0 ms] (167) QDP (168) TransformationProof [EQUIVALENT, 0 ms] (169) QDP (170) QDPQMonotonicMRRProof [EQUIVALENT, 79 ms] (171) QDP (172) DependencyGraphProof [EQUIVALENT, 0 ms] (173) TRUE (174) PiDP (175) UsableRulesProof [EQUIVALENT, 0 ms] (176) PiDP (177) PiDPToQDPProof [SOUND, 0 ms] (178) QDP (179) NonTerminationLoopProof [COMPLETE, 0 ms] (180) NO (181) PrologToIRSwTTransformerProof [SOUND, 83 ms] (182) AND (183) IRSwT (184) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (185) TRUE (186) IRSwT (187) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (188) TRUE (189) IRSwT (190) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (191) IRSwT (192) IntTRSCompressionProof [EQUIVALENT, 20 ms] (193) IRSwT (194) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (195) IRSwT (196) IRSwTTerminationDigraphProof [EQUIVALENT, 7 ms] (197) IRSwT (198) FilterProof [EQUIVALENT, 0 ms] (199) IntTRS (200) IntTRSPeriodicNontermProof [COMPLETE, 4 ms] (201) NO (202) IRSwT (203) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (204) IRSwT (205) IntTRSCompressionProof [EQUIVALENT, 7 ms] (206) IRSwT (207) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (208) IRSwT (209) IRSwTTerminationDigraphProof [EQUIVALENT, 12 ms] (210) IRSwT (211) FilterProof [EQUIVALENT, 0 ms] (212) IntTRS (213) IntTRSPeriodicNontermProof [COMPLETE, 0 ms] (214) NO ---------------------------------------- (0) Obligation: Clauses: mergesort([], []). mergesort(.(X, []), .(X, [])). mergesort(.(X, .(Y, Xs)), Ys) :- ','(split(.(X, .(Y, Xs)), X1s, X2s), ','(mergesort(X1s, Y1s), ','(mergesort(X2s, Y2s), merge(Y1s, Y2s, Ys)))). split([], [], []). split(.(X, Xs), .(X, Ys), Zs) :- split(Xs, Zs, Ys). merge([], Xs, Xs). merge(Xs, [], Xs). merge(.(X, Xs), .(Y, Ys), .(X, Zs)) :- ','(=(X, Y), merge(.(X, Xs), Ys, Zs)). Query: mergesort(a,g) ---------------------------------------- (1) UnifyTransformerProof (EQUIVALENT) Added a fact for the built-in = predicate [PROLOG]. ---------------------------------------- (2) Obligation: Clauses: mergesort([], []). mergesort(.(X, []), .(X, [])). mergesort(.(X, .(Y, Xs)), Ys) :- ','(split(.(X, .(Y, Xs)), X1s, X2s), ','(mergesort(X1s, Y1s), ','(mergesort(X2s, Y2s), merge(Y1s, Y2s, Ys)))). split([], [], []). split(.(X, Xs), .(X, Ys), Zs) :- split(Xs, Zs, Ys). merge([], Xs, Xs). merge(Xs, [], Xs). merge(.(X, Xs), .(Y, Ys), .(X, Zs)) :- ','(=(X, Y), merge(.(X, Xs), Ys, Zs)). =(X, X). Query: mergesort(a,g) ---------------------------------------- (3) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: mergesort_in_2: (f,b) (b,f) split_in_3: (f,f,f) (b,f,f) merge_in_3: (b,b,f) (b,b,b) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (4) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) ---------------------------------------- (5) 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: MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_GAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> U5_GAA(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_GA(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_GA(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGA(Y1s, Y2s, Ys) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGA(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_AG(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGG(Y1s, Y2s, Ys) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGG(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) MERGESORT_IN_AG(x1, x2) = MERGESORT_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x4, x5) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA U5_AAA(x1, x2, x3, x4, x5) = U5_AAA(x5) U2_AG(x1, x2, x3, x4, x5, x6) = U2_AG(x3, x4, x5, x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x3, x5) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) U5_GAA(x1, x2, x3, x4, x5) = U5_GAA(x2, x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x3, x5, x6) U3_GA(x1, x2, x3, x4, x5, x6) = U3_GA(x3, x5, x6) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x3, x5) MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) =_IN_AA(x1, x2) = =_IN_AA U7_GGA(x1, x2, x3, x4, x5, x6) = U7_GGA(x2, x4, x6) U3_AG(x1, x2, x3, x4, x5, x6) = U3_AG(x3, x4, x5, x6) U4_AG(x1, x2, x3, x4, x5) = U4_AG(x3, x4, x5) MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) U7_GGG(x1, x2, x3, x4, x5, x6) = U7_GGG(x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (6) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_GAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> U5_GAA(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_GA(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_GA(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGA(Y1s, Y2s, Ys) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGA(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_AG(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGG(Y1s, Y2s, Ys) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGG(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) MERGESORT_IN_AG(x1, x2) = MERGESORT_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x4, x5) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA U5_AAA(x1, x2, x3, x4, x5) = U5_AAA(x5) U2_AG(x1, x2, x3, x4, x5, x6) = U2_AG(x3, x4, x5, x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x3, x5) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) U5_GAA(x1, x2, x3, x4, x5) = U5_GAA(x2, x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x3, x5, x6) U3_GA(x1, x2, x3, x4, x5, x6) = U3_GA(x3, x5, x6) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x3, x5) MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) =_IN_AA(x1, x2) = =_IN_AA U7_GGA(x1, x2, x3, x4, x5, x6) = U7_GGA(x2, x4, x6) U3_AG(x1, x2, x3, x4, x5, x6) = U3_AG(x3, x4, x5, x6) U4_AG(x1, x2, x3, x4, x5) = U4_AG(x3, x4, x5) MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) U7_GGG(x1, x2, x3, x4, x5, x6) = U7_GGG(x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (7) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 18 less nodes. ---------------------------------------- (8) Complex Obligation (AND) ---------------------------------------- (9) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (10) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (11) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: =_in_aa(X, X) -> =_out_aa(X, X) The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (12) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (13) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GGG(Xs, Ys, Zs, =_out_aa) -> MERGE_IN_GGG(.(Xs), Ys, Zs) MERGE_IN_GGG(.(Xs), .(Ys), .(Zs)) -> U6_GGG(Xs, Ys, Zs, =_in_aa) The TRS R consists of the following rules: =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa We have to consider all (P,Q,R)-chains. ---------------------------------------- (14) 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: *MERGE_IN_GGG(.(Xs), .(Ys), .(Zs)) -> U6_GGG(Xs, Ys, Zs, =_in_aa) The graph contains the following edges 1 > 1, 2 > 2, 3 > 3 *U6_GGG(Xs, Ys, Zs, =_out_aa) -> MERGE_IN_GGG(.(Xs), Ys, Zs) The graph contains the following edges 2 >= 2, 3 >= 3 ---------------------------------------- (15) YES ---------------------------------------- (16) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (17) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (18) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: =_in_aa(X, X) -> =_out_aa(X, X) The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (19) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GGA(Xs, Ys, =_out_aa) -> MERGE_IN_GGA(.(Xs), Ys) MERGE_IN_GGA(.(Xs), .(Ys)) -> U6_GGA(Xs, Ys, =_in_aa) The TRS R consists of the following rules: =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa We have to consider all (P,Q,R)-chains. ---------------------------------------- (21) 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: *MERGE_IN_GGA(.(Xs), .(Ys)) -> U6_GGA(Xs, Ys, =_in_aa) The graph contains the following edges 1 > 1, 2 > 2 *U6_GGA(Xs, Ys, =_out_aa) -> MERGE_IN_GGA(.(Xs), Ys) The graph contains the following edges 2 >= 2 ---------------------------------------- (22) YES ---------------------------------------- (23) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) 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: SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) 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: SPLIT_IN_GAA(.(Xs)) -> SPLIT_IN_GAA(Xs) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (28) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *SPLIT_IN_GAA(.(Xs)) -> SPLIT_IN_GAA(Xs) The graph contains the following edges 1 > 1 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: Pi DP problem: The TRS P consists of the following rules: U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x3, x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x3, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (31) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (32) Obligation: Pi DP problem: The TRS P consists of the following rules: U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) The TRS R consists of the following rules: mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) =_in_aa(X, X) -> =_out_aa(X, X) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x3, x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x3, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (33) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (34) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_GA(Xs, X2s, mergesort_in_ga(X1s)) U2_GA(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, split_in_gaa(.(.(Xs)))) U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([], []) mergesort_in_ga(.([])) -> mergesort_out_ga(.([]), .([])) mergesort_in_ga(.(.(Xs))) -> U1_ga(Xs, split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) U1_ga(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_ga(Xs, X2s, mergesort_in_ga(X1s)) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) U2_ga(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(Xs, Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], [], []) U3_ga(Xs, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(Xs, merge_in_gga(Y1s, Y2s)) U4_ga(Xs, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(.(Xs)), Ys) merge_in_gga([], Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(Xs, Ys, merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(Xs, Ys, merge_out_gga(.(Xs), Ys, Zs)) -> merge_out_gga(.(Xs), .(Ys), .(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (35) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, split_in_gaa(.(.(Xs)))) at position [1] we obtained the following new rules [LPAR04]: (MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), split_in_gaa(.(Xs)))),MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), split_in_gaa(.(Xs))))) ---------------------------------------- (36) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_GA(Xs, X2s, mergesort_in_ga(X1s)) U2_GA(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), split_in_gaa(.(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([], []) mergesort_in_ga(.([])) -> mergesort_out_ga(.([]), .([])) mergesort_in_ga(.(.(Xs))) -> U1_ga(Xs, split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) U1_ga(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_ga(Xs, X2s, mergesort_in_ga(X1s)) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) U2_ga(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(Xs, Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], [], []) U3_ga(Xs, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(Xs, merge_in_gga(Y1s, Y2s)) U4_ga(Xs, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(.(Xs)), Ys) merge_in_gga([], Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(Xs, Ys, merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(Xs, Ys, merge_out_gga(.(Xs), Ys, Zs)) -> merge_out_gga(.(Xs), .(Ys), .(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (37) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), split_in_gaa(.(Xs)))) at position [1,1] we obtained the following new rules [LPAR04]: (MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))),MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs))))) ---------------------------------------- (38) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_GA(Xs, X2s, mergesort_in_ga(X1s)) U2_GA(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([], []) mergesort_in_ga(.([])) -> mergesort_out_ga(.([]), .([])) mergesort_in_ga(.(.(Xs))) -> U1_ga(Xs, split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) U1_ga(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_ga(Xs, X2s, mergesort_in_ga(X1s)) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) U2_ga(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(Xs, Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], [], []) U3_ga(Xs, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(Xs, merge_in_gga(Y1s, Y2s)) U4_ga(Xs, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(.(Xs)), Ys) merge_in_gga([], Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(Xs, Ys, merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(Xs, Ys, merge_out_gga(.(Xs), Ys, Zs)) -> merge_out_gga(.(Xs), .(Ys), .(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (39) 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: mergesort_in_ga(.([])) -> mergesort_out_ga(.([]), .([])) Used ordering: Polynomial interpretation [POLO]: POL(.(x_1)) = 2 + x_1 POL(=_in_aa) = 0 POL(=_out_aa) = 0 POL(MERGESORT_IN_GA(x_1)) = 2*x_1 POL(U1_GA(x_1, x_2)) = 2*x_2 POL(U1_ga(x_1, x_2)) = 2*x_2 POL(U2_GA(x_1, x_2, x_3)) = 2*x_2 + x_3 POL(U2_ga(x_1, x_2, x_3)) = 2*x_2 + x_3 POL(U3_ga(x_1, x_2, x_3)) = x_3 POL(U4_ga(x_1, x_2)) = 0 POL(U5_gaa(x_1, x_2)) = 2 + x_2 POL(U6_gga(x_1, x_2, x_3)) = 0 POL(U7_gga(x_1, x_2, x_3)) = 0 POL([]) = 0 POL(merge_in_gga(x_1, x_2)) = 0 POL(merge_out_gga(x_1, x_2, x_3)) = 0 POL(mergesort_in_ga(x_1)) = 2*x_1 POL(mergesort_out_ga(x_1, x_2)) = 0 POL(split_in_gaa(x_1)) = x_1 POL(split_out_gaa(x_1, x_2, x_3)) = x_2 + x_3 ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_GA(Xs, X2s, mergesort_in_ga(X1s)) U2_GA(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([], []) mergesort_in_ga(.(.(Xs))) -> U1_ga(Xs, split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) U1_ga(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_ga(Xs, X2s, mergesort_in_ga(X1s)) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) U2_ga(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(Xs, Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], [], []) U3_ga(Xs, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(Xs, merge_in_gga(Y1s, Y2s)) U4_ga(Xs, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(.(Xs)), Ys) merge_in_gga([], Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(Xs, Ys, merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(Xs, Ys, merge_out_gga(.(Xs), Ys, Zs)) -> merge_out_gga(.(Xs), .(Ys), .(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (41) 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(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s) Used ordering: Polynomial interpretation [POLO]: POL(.(x_1)) = 0 POL(=_in_aa) = 0 POL(=_out_aa) = 0 POL(MERGESORT_IN_GA(x_1)) = 0 POL(U1_GA(x_1, x_2)) = 2*x_2 POL(U1_ga(x_1, x_2)) = 2*x_2 POL(U2_GA(x_1, x_2, x_3)) = 2*x_3 POL(U2_ga(x_1, x_2, x_3)) = 2*x_3 POL(U3_ga(x_1, x_2, x_3)) = 2 POL(U4_ga(x_1, x_2)) = 1 POL(U5_gaa(x_1, x_2)) = 0 POL(U6_gga(x_1, x_2, x_3)) = 0 POL(U7_gga(x_1, x_2, x_3)) = 0 POL([]) = 2 POL(merge_in_gga(x_1, x_2)) = 0 POL(merge_out_gga(x_1, x_2, x_3)) = 0 POL(mergesort_in_ga(x_1)) = 2*x_1 POL(mergesort_out_ga(x_1, x_2)) = 1 POL(split_in_gaa(x_1)) = 2*x_1 POL(split_out_gaa(x_1, x_2, x_3)) = 2*x_2 ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_GA(Xs, X2s, mergesort_in_ga(X1s)) U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([], []) mergesort_in_ga(.(.(Xs))) -> U1_ga(Xs, split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) U1_ga(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_ga(Xs, X2s, mergesort_in_ga(X1s)) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) U2_ga(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(Xs, Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], [], []) U3_ga(Xs, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(Xs, merge_in_gga(Y1s, Y2s)) U4_ga(Xs, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(.(Xs)), Ys) merge_in_gga([], Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(Xs, Ys, merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(Xs, Ys, merge_out_gga(.(Xs), Ys, Zs)) -> merge_out_gga(.(Xs), .(Ys), .(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (43) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (44) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([], []) mergesort_in_ga(.(.(Xs))) -> U1_ga(Xs, split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) U1_ga(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> U2_ga(Xs, X2s, mergesort_in_ga(X1s)) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) U2_ga(Xs, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(Xs, Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], [], []) U3_ga(Xs, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(Xs, merge_in_gga(Y1s, Y2s)) U4_ga(Xs, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(.(Xs)), Ys) merge_in_gga([], Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(Xs, Ys, merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(Xs, Ys, merge_out_gga(.(Xs), Ys, Zs)) -> merge_out_gga(.(Xs), .(Ys), .(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (45) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (46) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], [], []) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0, x1) U5_gaa(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (47) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. mergesort_in_ga(x0) U1_ga(x0, x1) U2_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0, x1, x2) ---------------------------------------- (48) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], [], []) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) The set Q consists of the following terms: split_in_gaa(x0) U5_gaa(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (49) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(Xs, U5_gaa(.(Xs), U5_gaa(Xs, split_in_gaa(Xs)))) The remaining pairs can at least be oriented weakly. Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: <<< POL(U1_GA(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 >>> <<< POL(split_out_gaa(x_1, x_2, x_3)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 + [[1A]] * x_3 >>> <<< POL(.(x_1)) = [[-I]] + [[2A]] * x_1 >>> <<< POL(MERGESORT_IN_GA(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(U5_gaa(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[1A]] * x_2 >>> <<< POL(split_in_gaa(x_1)) = [[-I]] + [[1A]] * x_1 >>> <<< POL([]) = [[0A]] >>> The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], [], []) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(Xs, split_out_gaa(.(.(Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(Xs, split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], [], []) U5_gaa(Xs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(Xs), .(Ys), Zs) The set Q consists of the following terms: split_in_gaa(x0) U5_gaa(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (51) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (52) TRUE ---------------------------------------- (53) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1, x2) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x3, x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x1, x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x2, x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x3, x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x3, x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x3, x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x1, x2, x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x2, x4, x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x4, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg(x1, x2, x3) U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x2, x4, x5, x6) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA We have to consider all (P,R,Pi)-chains ---------------------------------------- (54) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (55) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA We have to consider all (P,R,Pi)-chains ---------------------------------------- (56) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (57) Obligation: Q DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA -> SPLIT_IN_AAA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (58) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: mergesort_in_2: (f,b) (b,f) split_in_3: (f,f,f) (b,f,f) merge_in_3: (b,b,f) (b,b,b) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (59) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) ---------------------------------------- (60) 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: MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_GAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> U5_GAA(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_GA(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_GA(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGA(Y1s, Y2s, Ys) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGA(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_AG(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGG(Y1s, Y2s, Ys) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGG(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) MERGESORT_IN_AG(x1, x2) = MERGESORT_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x4, x5) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA U5_AAA(x1, x2, x3, x4, x5) = U5_AAA(x5) U2_AG(x1, x2, x3, x4, x5, x6) = U2_AG(x3, x4, x5, x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x5) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) U5_GAA(x1, x2, x3, x4, x5) = U5_GAA(x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x5, x6) U3_GA(x1, x2, x3, x4, x5, x6) = U3_GA(x5, x6) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x5) MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) =_IN_AA(x1, x2) = =_IN_AA U7_GGA(x1, x2, x3, x4, x5, x6) = U7_GGA(x6) U3_AG(x1, x2, x3, x4, x5, x6) = U3_AG(x3, x4, x5, x6) U4_AG(x1, x2, x3, x4, x5) = U4_AG(x3, x5) MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) U7_GGG(x1, x2, x3, x4, x5, x6) = U7_GGG(x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (61) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> U1_AG(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_AG(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_AAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> U5_AAA(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_AG(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_AG(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> SPLIT_IN_GAA(.(X, .(Y, Xs)), X1s, X2s) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> U5_GAA(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_GA(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_GA(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) U3_GA(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGA(Y1s, Y2s, Ys) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGA(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_AG(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U2_AG(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_AG(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) U3_AG(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> MERGE_IN_GGG(Y1s, Y2s, Ys) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> =_IN_AA(X, Y) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_GGG(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) MERGESORT_IN_AG(x1, x2) = MERGESORT_IN_AG(x2) U1_AG(x1, x2, x3, x4, x5) = U1_AG(x4, x5) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA U5_AAA(x1, x2, x3, x4, x5) = U5_AAA(x5) U2_AG(x1, x2, x3, x4, x5, x6) = U2_AG(x3, x4, x5, x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x5) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) U5_GAA(x1, x2, x3, x4, x5) = U5_GAA(x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x5, x6) U3_GA(x1, x2, x3, x4, x5, x6) = U3_GA(x5, x6) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x5) MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) =_IN_AA(x1, x2) = =_IN_AA U7_GGA(x1, x2, x3, x4, x5, x6) = U7_GGA(x6) U3_AG(x1, x2, x3, x4, x5, x6) = U3_AG(x3, x4, x5, x6) U4_AG(x1, x2, x3, x4, x5) = U4_AG(x3, x5) MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) U7_GGG(x1, x2, x3, x4, x5, x6) = U7_GGG(x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (62) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 18 less nodes. ---------------------------------------- (63) Complex Obligation (AND) ---------------------------------------- (64) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (65) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (66) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGG(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGG(.(X, Xs), Ys, Zs) MERGE_IN_GGG(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGG(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: =_in_aa(X, X) -> =_out_aa(X, X) The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa MERGE_IN_GGG(x1, x2, x3) = MERGE_IN_GGG(x1, x2, x3) U6_GGG(x1, x2, x3, x4, x5, x6) = U6_GGG(x2, x4, x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (67) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (68) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GGG(Xs, Ys, Zs, =_out_aa) -> MERGE_IN_GGG(.(Xs), Ys, Zs) MERGE_IN_GGG(.(Xs), .(Ys), .(Zs)) -> U6_GGG(Xs, Ys, Zs, =_in_aa) The TRS R consists of the following rules: =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa We have to consider all (P,Q,R)-chains. ---------------------------------------- (69) 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: *MERGE_IN_GGG(.(Xs), .(Ys), .(Zs)) -> U6_GGG(Xs, Ys, Zs, =_in_aa) The graph contains the following edges 1 > 1, 2 > 2, 3 > 3 *U6_GGG(Xs, Ys, Zs, =_out_aa) -> MERGE_IN_GGG(.(Xs), Ys, Zs) The graph contains the following edges 2 >= 2, 3 >= 3 ---------------------------------------- (70) YES ---------------------------------------- (71) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (72) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (73) Obligation: Pi DP problem: The TRS P consists of the following rules: U6_GGA(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> MERGE_IN_GGA(.(X, Xs), Ys, Zs) MERGE_IN_GGA(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_GGA(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) The TRS R consists of the following rules: =_in_aa(X, X) -> =_out_aa(X, X) The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa MERGE_IN_GGA(x1, x2, x3) = MERGE_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4, x5, x6) = U6_GGA(x2, x4, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (74) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (75) Obligation: Q DP problem: The TRS P consists of the following rules: U6_GGA(Xs, Ys, =_out_aa) -> MERGE_IN_GGA(.(Xs), Ys) MERGE_IN_GGA(.(Xs), .(Ys)) -> U6_GGA(Xs, Ys, =_in_aa) The TRS R consists of the following rules: =_in_aa -> =_out_aa The set Q consists of the following terms: =_in_aa We have to consider all (P,Q,R)-chains. ---------------------------------------- (76) 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: *MERGE_IN_GGA(.(Xs), .(Ys)) -> U6_GGA(Xs, Ys, =_in_aa) The graph contains the following edges 1 > 1, 2 > 2 *U6_GGA(Xs, Ys, =_out_aa) -> MERGE_IN_GGA(.(Xs), Ys) The graph contains the following edges 2 >= 2 ---------------------------------------- (77) YES ---------------------------------------- (78) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (79) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (80) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_GAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_GAA(Xs, Zs, Ys) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) SPLIT_IN_GAA(x1, x2, x3) = SPLIT_IN_GAA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (81) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (82) Obligation: Q DP problem: The TRS P consists of the following rules: SPLIT_IN_GAA(.(Xs)) -> SPLIT_IN_GAA(Xs) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (83) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *SPLIT_IN_GAA(.(Xs)) -> SPLIT_IN_GAA(Xs) The graph contains the following edges 1 > 1 ---------------------------------------- (84) YES ---------------------------------------- (85) Obligation: Pi DP problem: The TRS P consists of the following rules: U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (86) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (87) Obligation: Pi DP problem: The TRS P consists of the following rules: U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_GA(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_GA(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> MERGESORT_IN_GA(X2s, Y2s) MERGESORT_IN_GA(.(X, .(Y, Xs)), Ys) -> U1_GA(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) U1_GA(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> MERGESORT_IN_GA(X1s, Y1s) The TRS R consists of the following rules: mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) =_in_aa(X, X) -> =_out_aa(X, X) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) MERGESORT_IN_GA(x1, x2) = MERGESORT_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x5) U2_GA(x1, x2, x3, x4, x5, x6) = U2_GA(x5, x6) We have to consider all (P,R,Pi)-chains ---------------------------------------- (88) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (89) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(split_in_gaa(.(.(Xs)))) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.([])) -> mergesort_out_ga(.([])) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], []) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(merge_out_gga(Zs)) -> merge_out_gga(.(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (90) 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: mergesort_in_ga(.([])) -> mergesort_out_ga(.([])) Used ordering: Polynomial interpretation [POLO]: POL(.(x_1)) = 2 + x_1 POL(=_in_aa) = 1 POL(=_out_aa) = 1 POL(MERGESORT_IN_GA(x_1)) = 2*x_1 POL(U1_GA(x_1)) = 2*x_1 POL(U1_ga(x_1)) = 2*x_1 POL(U2_GA(x_1, x_2)) = 2*x_1 + x_2 POL(U2_ga(x_1, x_2)) = 2*x_1 + x_2 POL(U3_ga(x_1, x_2)) = x_1 + x_2 POL(U4_ga(x_1)) = x_1 POL(U5_gaa(x_1)) = 2 + x_1 POL(U6_gga(x_1, x_2, x_3)) = 2 + x_1 + x_2 + 2*x_3 POL(U7_gga(x_1)) = 2 + x_1 POL([]) = 0 POL(merge_in_gga(x_1, x_2)) = x_1 + x_2 POL(merge_out_gga(x_1)) = x_1 POL(mergesort_in_ga(x_1)) = 2*x_1 POL(mergesort_out_ga(x_1)) = x_1 POL(split_in_gaa(x_1)) = x_1 POL(split_out_gaa(x_1, x_2)) = x_1 + x_2 ---------------------------------------- (91) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(split_in_gaa(.(.(Xs)))) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], []) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(merge_out_gga(Zs)) -> merge_out_gga(.(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (92) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(split_in_gaa(.(.(Xs)))) at position [0] we obtained the following new rules [LPAR04]: (MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(split_in_gaa(.(Xs)))),MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(split_in_gaa(.(Xs))))) ---------------------------------------- (93) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(split_in_gaa(.(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], []) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(merge_out_gga(Zs)) -> merge_out_gga(.(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (94) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(split_in_gaa(.(Xs)))) at position [0,0] we obtained the following new rules [LPAR04]: (MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))),MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs))))) ---------------------------------------- (95) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], []) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(merge_out_gga(Zs)) -> merge_out_gga(.(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (96) 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: merge_in_gga(.(Xs), .(Ys)) -> U6_gga(Xs, Ys, =_in_aa) Used ordering: Polynomial interpretation [POLO]: POL(.(x_1)) = 1 + x_1 POL(=_in_aa) = 1 POL(=_out_aa) = 1 POL(MERGESORT_IN_GA(x_1)) = 0 POL(U1_GA(x_1)) = 0 POL(U1_ga(x_1)) = 0 POL(U2_GA(x_1, x_2)) = 2*x_2 POL(U2_ga(x_1, x_2)) = 2*x_2 POL(U3_ga(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U4_ga(x_1)) = 2*x_1 POL(U5_gaa(x_1)) = 0 POL(U6_gga(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 POL(U7_gga(x_1)) = 1 + x_1 POL([]) = 0 POL(merge_in_gga(x_1, x_2)) = x_1 + 2*x_2 POL(merge_out_gga(x_1)) = x_1 POL(mergesort_in_ga(x_1)) = 0 POL(mergesort_out_ga(x_1)) = 2*x_1 POL(split_in_gaa(x_1)) = 0 POL(split_out_gaa(x_1, x_2)) = 0 ---------------------------------------- (97) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) split_in_gaa([]) -> split_out_gaa([], []) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U6_gga(Xs, Ys, =_out_aa) -> U7_gga(merge_in_gga(.(Xs), Ys)) =_in_aa -> =_out_aa U7_gga(merge_out_gga(Zs)) -> merge_out_gga(.(Zs)) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (98) 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. ---------------------------------------- (99) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (100) 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]. U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) ---------------------------------------- (101) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (102) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U2_GA_2(x_1, x_2) ) = x_2 POL( mergesort_in_ga_1(x_1) ) = 2x_1 POL( [] ) = 1 POL( mergesort_out_ga_1(x_1) ) = 2 POL( ._1(x_1) ) = 0 POL( U1_ga_1(x_1) ) = 2x_1 POL( split_in_gaa_1(x_1) ) = max{0, -2} POL( U1_GA_1(x_1) ) = 2x_1 POL( U5_gaa_1(x_1) ) = 0 POL( split_out_gaa_2(x_1, x_2) ) = x_1 POL( U2_ga_2(x_1, x_2) ) = x_2 POL( U3_ga_2(x_1, x_2) ) = 2 POL( U4_ga_1(x_1) ) = max{0, 2x_1 - 2} POL( merge_in_gga_2(x_1, x_2) ) = 2 POL( merge_out_gga_1(x_1) ) = 2 POL( MERGESORT_IN_GA_1(x_1) ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) ---------------------------------------- (103) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (104) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (105) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (106) 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. ---------------------------------------- (107) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (108) 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]. mergesort_in_ga(x0) U1_ga(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) ---------------------------------------- (109) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) The set Q consists of the following terms: split_in_gaa(x0) U5_gaa(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (110) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) The TRS R consists of the following rules: mergesort_in_ag([], []) -> mergesort_out_ag([], []) mergesort_in_ag(.(X, []), .(X, [])) -> mergesort_out_ag(.(X, []), .(X, [])) mergesort_in_ag(.(X, .(Y, Xs)), Ys) -> U1_ag(X, Y, Xs, Ys, split_in_aaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_aaa([], [], []) -> split_out_aaa([], [], []) split_in_aaa(.(X, Xs), .(X, Ys), Zs) -> U5_aaa(X, Xs, Ys, Zs, split_in_aaa(Xs, Zs, Ys)) U5_aaa(X, Xs, Ys, Zs, split_out_aaa(Xs, Zs, Ys)) -> split_out_aaa(.(X, Xs), .(X, Ys), Zs) U1_ag(X, Y, Xs, Ys, split_out_aaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ag(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) mergesort_in_ga([], []) -> mergesort_out_ga([], []) mergesort_in_ga(.(X, []), .(X, [])) -> mergesort_out_ga(.(X, []), .(X, [])) mergesort_in_ga(.(X, .(Y, Xs)), Ys) -> U1_ga(X, Y, Xs, Ys, split_in_gaa(.(X, .(Y, Xs)), X1s, X2s)) split_in_gaa([], [], []) -> split_out_gaa([], [], []) split_in_gaa(.(X, Xs), .(X, Ys), Zs) -> U5_gaa(X, Xs, Ys, Zs, split_in_gaa(Xs, Zs, Ys)) U5_gaa(X, Xs, Ys, Zs, split_out_gaa(Xs, Zs, Ys)) -> split_out_gaa(.(X, Xs), .(X, Ys), Zs) U1_ga(X, Y, Xs, Ys, split_out_gaa(.(X, .(Y, Xs)), X1s, X2s)) -> U2_ga(X, Y, Xs, Ys, X2s, mergesort_in_ga(X1s, Y1s)) U2_ga(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ga(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ga(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ga(X, Y, Xs, Ys, merge_in_gga(Y1s, Y2s, Ys)) merge_in_gga([], Xs, Xs) -> merge_out_gga([], Xs, Xs) merge_in_gga(Xs, [], Xs) -> merge_out_gga(Xs, [], Xs) merge_in_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_gga(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) =_in_aa(X, X) -> =_out_aa(X, X) U6_gga(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_gga(X, Xs, Y, Ys, Zs, merge_in_gga(.(X, Xs), Ys, Zs)) U7_gga(X, Xs, Y, Ys, Zs, merge_out_gga(.(X, Xs), Ys, Zs)) -> merge_out_gga(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ga(X, Y, Xs, Ys, merge_out_gga(Y1s, Y2s, Ys)) -> mergesort_out_ga(.(X, .(Y, Xs)), Ys) U2_ag(X, Y, Xs, Ys, X2s, mergesort_out_ga(X1s, Y1s)) -> U3_ag(X, Y, Xs, Ys, Y1s, mergesort_in_ga(X2s, Y2s)) U3_ag(X, Y, Xs, Ys, Y1s, mergesort_out_ga(X2s, Y2s)) -> U4_ag(X, Y, Xs, Ys, merge_in_ggg(Y1s, Y2s, Ys)) merge_in_ggg([], Xs, Xs) -> merge_out_ggg([], Xs, Xs) merge_in_ggg(Xs, [], Xs) -> merge_out_ggg(Xs, [], Xs) merge_in_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) -> U6_ggg(X, Xs, Y, Ys, Zs, =_in_aa(X, Y)) U6_ggg(X, Xs, Y, Ys, Zs, =_out_aa(X, Y)) -> U7_ggg(X, Xs, Y, Ys, Zs, merge_in_ggg(.(X, Xs), Ys, Zs)) U7_ggg(X, Xs, Y, Ys, Zs, merge_out_ggg(.(X, Xs), Ys, Zs)) -> merge_out_ggg(.(X, Xs), .(Y, Ys), .(X, Zs)) U4_ag(X, Y, Xs, Ys, merge_out_ggg(Y1s, Y2s, Ys)) -> mergesort_out_ag(.(X, .(Y, Xs)), Ys) The argument filtering Pi contains the following mapping: mergesort_in_ag(x1, x2) = mergesort_in_ag(x2) [] = [] mergesort_out_ag(x1, x2) = mergesort_out_ag(x1) .(x1, x2) = .(x2) U1_ag(x1, x2, x3, x4, x5) = U1_ag(x4, x5) split_in_aaa(x1, x2, x3) = split_in_aaa split_out_aaa(x1, x2, x3) = split_out_aaa(x1, x2, x3) U5_aaa(x1, x2, x3, x4, x5) = U5_aaa(x5) U2_ag(x1, x2, x3, x4, x5, x6) = U2_ag(x3, x4, x5, x6) mergesort_in_ga(x1, x2) = mergesort_in_ga(x1) mergesort_out_ga(x1, x2) = mergesort_out_ga(x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) split_in_gaa(x1, x2, x3) = split_in_gaa(x1) split_out_gaa(x1, x2, x3) = split_out_gaa(x2, x3) U5_gaa(x1, x2, x3, x4, x5) = U5_gaa(x5) U2_ga(x1, x2, x3, x4, x5, x6) = U2_ga(x5, x6) U3_ga(x1, x2, x3, x4, x5, x6) = U3_ga(x5, x6) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x5) merge_in_gga(x1, x2, x3) = merge_in_gga(x1, x2) merge_out_gga(x1, x2, x3) = merge_out_gga(x3) U6_gga(x1, x2, x3, x4, x5, x6) = U6_gga(x2, x4, x6) =_in_aa(x1, x2) = =_in_aa =_out_aa(x1, x2) = =_out_aa U7_gga(x1, x2, x3, x4, x5, x6) = U7_gga(x6) U3_ag(x1, x2, x3, x4, x5, x6) = U3_ag(x3, x4, x5, x6) U4_ag(x1, x2, x3, x4, x5) = U4_ag(x3, x5) merge_in_ggg(x1, x2, x3) = merge_in_ggg(x1, x2, x3) merge_out_ggg(x1, x2, x3) = merge_out_ggg U6_ggg(x1, x2, x3, x4, x5, x6) = U6_ggg(x2, x4, x5, x6) U7_ggg(x1, x2, x3, x4, x5, x6) = U7_ggg(x6) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA We have to consider all (P,R,Pi)-chains ---------------------------------------- (111) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (112) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) SPLIT_IN_AAA(x1, x2, x3) = SPLIT_IN_AAA We have to consider all (P,R,Pi)-chains ---------------------------------------- (113) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 2, "program": { "directives": [], "clauses": [ [ "(mergesort ([]) ([]))", null ], [ "(mergesort (. X ([])) (. X ([])))", null ], [ "(mergesort (. X (. Y Xs)) Ys)", "(',' (split (. X (. Y Xs)) X1s X2s) (',' (mergesort X1s Y1s) (',' (mergesort X2s Y2s) (merge Y1s Y2s Ys))))" ], [ "(split ([]) ([]) ([]))", null ], [ "(split (. X Xs) (. X Ys) Zs)", "(split Xs Zs Ys)" ], [ "(merge ([]) Xs Xs)", null ], [ "(merge Xs ([]) Xs)", null ], [ "(merge (. X Xs) (. Y Ys) (. X Zs))", "(',' (= X Y) (merge (. X Xs) Ys Zs))" ] ] }, "graph": { "nodes": { "191": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "192": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T23 X24) (',' (mergesort T24 X25) (merge X24 X25 T19)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [ "X24", "X25" ], "exprvars": [] } }, "type": "Nodes", "195": { "goal": [ { "clause": 3, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }, { "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "470": { "goal": [ { "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }, { "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "196": { "goal": [{ "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "350": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "351": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "550": { "goal": [ { "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "353": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "474": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "551": { "goal": [{ "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "475": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "552": { "goal": [ { "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "597": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T54 X25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X25"], "exprvars": [] } }, "356": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "477": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "554": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "598": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "357": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "358": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T52 X79 X78)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X78", "X79" ], "exprvars": [] } }, "556": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "359": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "557": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "51": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "52": { "goal": [{ "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "53": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "54": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "55": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "56": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "481": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "483": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "560": { "goal": [{ "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "561": { "goal": [{ "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "563": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "564": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "565": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "601": { "goal": [ { "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }, { "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }, { "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "604": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "605": { "goal": [ { "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }, { "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "606": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "63": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T20 (. T21 T22)) X22 X23) (',' (mergesort X22 X24) (',' (mergesort X23 X25) (merge X24 X25 T19))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [ "X22", "X23", "X24", "X25" ], "exprvars": [] } }, "607": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "64": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "608": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "22": { "goal": [ { "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "23": { "goal": [{ "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "24": { "goal": [ { "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "29": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "490": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "491": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "493": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "495": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T69 (. T70 T71)) X103 X104) (',' (mergesort X103 X105) (',' (mergesort X104 X106) (merge X105 X106 X107))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X107", "X103", "X104", "X105", "X106" ], "exprvars": [] } }, "496": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "497": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T69 (. T70 T71)) X103 X104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X103", "X104" ], "exprvars": [] } }, "498": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T72 X105) (',' (mergesort T73 X106) (merge X105 X106 X107)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X107", "X105", "X106" ], "exprvars": [] } }, "335": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "610": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "611": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "458": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "338": { "goal": [ { "clause": 3, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }, { "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "459": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T54 X25) (merge T53 X25 T19))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": ["X25"], "exprvars": [] } }, "613": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "339": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "614": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "615": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "30": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "619": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T135 T140) (merge (. T135 T142) T141 T139))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T135", "T139" ], "free": [], "exprvars": [] } }, "582": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T102 T103) (merge (. T102 T105) T104 X137))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "541": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T72 X105)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X105"], "exprvars": [] } }, "585": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "542": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T75 X106) (merge T74 X106 X107))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X107", "X106" ], "exprvars": [] } }, "586": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T109 T110) T108 X137)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "466": { "goal": [ { "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }, { "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }, { "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "587": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "347": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "622": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "348": { "goal": [ { "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }, { "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "469": { "goal": [{ "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "546": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T75 X106)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X106"], "exprvars": [] } }, "547": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "624": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T144 T146) T145 T139)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T139", "T144" ], "free": [], "exprvars": [] } }, "625": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 22, "label": "CASE" }, { "from": 22, "to": 23, "label": "PARALLEL" }, { "from": 22, "to": 24, "label": "PARALLEL" }, { "from": 23, "to": 29, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 23, "to": 30, "label": "EVAL-BACKTRACK" }, { "from": 24, "to": 52, "label": "PARALLEL" }, { "from": 24, "to": 53, "label": "PARALLEL" }, { "from": 29, "to": 51, "label": "SUCCESS" }, { "from": 52, "to": 54, "label": "EVAL with clause\nmergesort(.(X5, []), .(X5, [])).\nand substitutionX5 -> T7,\nT1 -> .(T7, []),\nT2 -> .(T7, [])" }, { "from": 52, "to": 55, "label": "EVAL-BACKTRACK" }, { "from": 53, "to": 63, "label": "EVAL with clause\nmergesort(.(X18, .(X19, X20)), X21) :- ','(split(.(X18, .(X19, X20)), X22, X23), ','(mergesort(X22, X24), ','(mergesort(X23, X25), merge(X24, X25, X21)))).\nand substitutionX18 -> T20,\nX19 -> T21,\nX20 -> T22,\nT1 -> .(T20, .(T21, T22)),\nT2 -> T19,\nX21 -> T19,\nT16 -> T20,\nT17 -> T21,\nT18 -> T22" }, { "from": 53, "to": 64, "label": "EVAL-BACKTRACK" }, { "from": 54, "to": 56, "label": "SUCCESS" }, { "from": 63, "to": 191, "label": "SPLIT 1" }, { "from": 63, "to": 192, "label": "SPLIT 2\nreplacements:X22 -> T23,\nX23 -> T24" }, { "from": 191, "to": 195, "label": "CASE" }, { "from": 192, "to": 458, "label": "SPLIT 1" }, { "from": 192, "to": 459, "label": "SPLIT 2\nreplacements:X24 -> T53,\nT24 -> T54" }, { "from": 195, "to": 196, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 196, "to": 335, "label": "ONLY EVAL with clause\nsplit(.(X38, X39), .(X38, X40), X41) :- split(X39, X41, X40).\nand substitutionT20 -> T33,\nX38 -> T33,\nT21 -> T36,\nT22 -> T37,\nX39 -> .(T36, T37),\nX40 -> X42,\nX22 -> .(T33, X42),\nX23 -> X43,\nX41 -> X43,\nT34 -> T36,\nT35 -> T37" }, { "from": 335, "to": 338, "label": "CASE" }, { "from": 338, "to": 339, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 339, "to": 347, "label": "ONLY EVAL with clause\nsplit(.(X56, X57), .(X56, X58), X59) :- split(X57, X59, X58).\nand substitutionT36 -> T43,\nX56 -> T43,\nT37 -> T45,\nX57 -> T45,\nX58 -> X60,\nX43 -> .(T43, X60),\nX42 -> X61,\nX59 -> X61,\nT44 -> T45" }, { "from": 347, "to": 348, "label": "CASE" }, { "from": 348, "to": 350, "label": "PARALLEL" }, { "from": 348, "to": 351, "label": "PARALLEL" }, { "from": 350, "to": 353, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT45 -> [],\nX61 -> [],\nX60 -> []" }, { "from": 350, "to": 356, "label": "EVAL-BACKTRACK" }, { "from": 351, "to": 358, "label": "EVAL with clause\nsplit(.(X74, X75), .(X74, X76), X77) :- split(X75, X77, X76).\nand substitutionX74 -> T50,\nX75 -> T52,\nT45 -> .(T50, T52),\nX76 -> X78,\nX61 -> .(T50, X78),\nX60 -> X79,\nX77 -> X79,\nT51 -> T52" }, { "from": 351, "to": 359, "label": "EVAL-BACKTRACK" }, { "from": 353, "to": 357, "label": "SUCCESS" }, { "from": 358, "to": 347, "label": "INSTANCE with matching:\nT45 -> T52\nX61 -> X79\nX60 -> X78" }, { "from": 458, "to": 466, "label": "CASE" }, { "from": 459, "to": 597, "label": "SPLIT 1" }, { "from": 459, "to": 598, "label": "SPLIT 2\nreplacements:X25 -> T111,\nT53 -> T112" }, { "from": 466, "to": 469, "label": "PARALLEL" }, { "from": 466, "to": 470, "label": "PARALLEL" }, { "from": 469, "to": 474, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT23 -> [],\nX24 -> []" }, { "from": 469, "to": 475, "label": "EVAL-BACKTRACK" }, { "from": 470, "to": 481, "label": "PARALLEL" }, { "from": 470, "to": 483, "label": "PARALLEL" }, { "from": 474, "to": 477, "label": "SUCCESS" }, { "from": 481, "to": 490, "label": "EVAL with clause\nmergesort(.(X84, []), .(X84, [])).\nand substitutionX84 -> T59,\nT23 -> .(T59, []),\nX24 -> .(T59, [])" }, { "from": 481, "to": 491, "label": "EVAL-BACKTRACK" }, { "from": 483, "to": 495, "label": "EVAL with clause\nmergesort(.(X99, .(X100, X101)), X102) :- ','(split(.(X99, .(X100, X101)), X103, X104), ','(mergesort(X103, X105), ','(mergesort(X104, X106), merge(X105, X106, X102)))).\nand substitutionX99 -> T69,\nX100 -> T70,\nX101 -> T71,\nT23 -> .(T69, .(T70, T71)),\nX24 -> X107,\nX102 -> X107,\nT66 -> T69,\nT67 -> T70,\nT68 -> T71" }, { "from": 483, "to": 496, "label": "EVAL-BACKTRACK" }, { "from": 490, "to": 493, "label": "SUCCESS" }, { "from": 495, "to": 497, "label": "SPLIT 1" }, { "from": 495, "to": 498, "label": "SPLIT 2\nreplacements:X103 -> T72,\nX104 -> T73" }, { "from": 497, "to": 191, "label": "INSTANCE with matching:\nT20 -> T69\nT21 -> T70\nT22 -> T71\nX22 -> X103\nX23 -> X104" }, { "from": 498, "to": 541, "label": "SPLIT 1" }, { "from": 498, "to": 542, "label": "SPLIT 2\nreplacements:X105 -> T74,\nT73 -> T75" }, { "from": 541, "to": 458, "label": "INSTANCE with matching:\nT23 -> T72\nX24 -> X105" }, { "from": 542, "to": 546, "label": "SPLIT 1" }, { "from": 542, "to": 547, "label": "SPLIT 2\nreplacements:X106 -> T76,\nT74 -> T77" }, { "from": 546, "to": 458, "label": "INSTANCE with matching:\nT23 -> T75\nX24 -> X106" }, { "from": 547, "to": 550, "label": "CASE" }, { "from": 550, "to": 551, "label": "PARALLEL" }, { "from": 550, "to": 552, "label": "PARALLEL" }, { "from": 551, "to": 554, "label": "EVAL with clause\nmerge([], X114, X114).\nand substitutionT77 -> [],\nT76 -> T84,\nX114 -> T84,\nX107 -> T84" }, { "from": 551, "to": 556, "label": "EVAL-BACKTRACK" }, { "from": 552, "to": 560, "label": "PARALLEL" }, { "from": 552, "to": 561, "label": "PARALLEL" }, { "from": 554, "to": 557, "label": "SUCCESS" }, { "from": 560, "to": 563, "label": "EVAL with clause\nmerge(X119, [], X119).\nand substitutionT77 -> T89,\nX119 -> T89,\nT76 -> [],\nX107 -> T89" }, { "from": 560, "to": 564, "label": "EVAL-BACKTRACK" }, { "from": 561, "to": 582, "label": "EVAL with clause\nmerge(.(X132, X133), .(X134, X135), .(X132, X136)) :- ','(=(X132, X134), merge(.(X132, X133), X135, X136)).\nand substitutionX132 -> T102,\nX133 -> T105,\nT77 -> .(T102, T105),\nX134 -> T103,\nX135 -> T104,\nT76 -> .(T103, T104),\nX136 -> X137,\nX107 -> .(T102, X137),\nT98 -> T102,\nT100 -> T103,\nT101 -> T104,\nT99 -> T105" }, { "from": 561, "to": 585, "label": "EVAL-BACKTRACK" }, { "from": 563, "to": 565, "label": "SUCCESS" }, { "from": 582, "to": 586, "label": "UNIFY CASE with substitutionT102 -> T109,\nT103 -> T109,\nT104 -> T108,\nT107 -> T109,\nT105 -> T110" }, { "from": 582, "to": 587, "label": "UNIFY-BACKTRACK" }, { "from": 586, "to": 547, "label": "INSTANCE with matching:\nT77 -> .(T109, T110)\nT76 -> T108\nX107 -> X137" }, { "from": 597, "to": 458, "label": "INSTANCE with matching:\nT23 -> T54\nX24 -> X25" }, { "from": 598, "to": 601, "label": "CASE" }, { "from": 601, "to": 604, "label": "PARALLEL" }, { "from": 601, "to": 605, "label": "PARALLEL" }, { "from": 604, "to": 606, "label": "EVAL with clause\nmerge([], X146, X146).\nand substitutionT112 -> [],\nT111 -> T119,\nX146 -> T119,\nT19 -> T119" }, { "from": 604, "to": 607, "label": "EVAL-BACKTRACK" }, { "from": 605, "to": 610, "label": "PARALLEL" }, { "from": 605, "to": 611, "label": "PARALLEL" }, { "from": 606, "to": 608, "label": "SUCCESS" }, { "from": 610, "to": 613, "label": "EVAL with clause\nmerge(X151, [], X151).\nand substitutionT112 -> T124,\nX151 -> T124,\nT111 -> [],\nT19 -> T124" }, { "from": 610, "to": 614, "label": "EVAL-BACKTRACK" }, { "from": 611, "to": 619, "label": "EVAL with clause\nmerge(.(X162, X163), .(X164, X165), .(X162, X166)) :- ','(=(X162, X164), merge(.(X162, X163), X165, X166)).\nand substitutionX162 -> T135,\nX163 -> T142,\nT112 -> .(T135, T142),\nX164 -> T140,\nX165 -> T141,\nT111 -> .(T140, T141),\nX166 -> T139,\nT19 -> .(T135, T139),\nT137 -> T140,\nT138 -> T141,\nT136 -> T142" }, { "from": 611, "to": 622, "label": "EVAL-BACKTRACK" }, { "from": 613, "to": 615, "label": "SUCCESS" }, { "from": 619, "to": 624, "label": "UNIFY CASE with substitutionT135 -> T144,\nT140 -> T144,\nT141 -> T145,\nT142 -> T146" }, { "from": 619, "to": 625, "label": "UNIFY-BACKTRACK" }, { "from": 624, "to": 598, "label": "INSTANCE with matching:\nT112 -> .(T144, T146)\nT111 -> T145\nT19 -> T139" } ], "type": "Graph" } } ---------------------------------------- (114) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in([]) -> f2_out1 f2_in(.(T7, [])) -> f2_out1 f2_in(T19) -> U1(f63_in(T19), T19) U1(f63_out1(X24, X25), T19) -> f2_out1 f347_in -> f347_out1 f347_in -> U2(f347_in) U2(f347_out1) -> f347_out1 f191_in -> U3(f347_in) U3(f347_out1) -> f191_out1 f458_in -> f458_out1 f458_in -> U4(f495_in) U4(f495_out1) -> f458_out1 f547_in -> f547_out1 f547_in -> U5(f547_in) U5(f547_out1) -> f547_out1 f598_in(T119) -> f598_out1([], T119) f598_in(T124) -> f598_out1(T124, []) f598_in(.(T144, T139)) -> U6(f598_in(T139), .(T144, T139)) U6(f598_out1(.(T144, T146), T145), .(T144, T139)) -> f598_out1(.(T144, T146), .(T144, T145)) f63_in(T19) -> U7(f191_in, T19) U7(f191_out1, T19) -> U8(f192_in(T19), T19) U8(f192_out1(X24, X25), T19) -> f63_out1(X24, X25) f192_in(T19) -> U9(f458_in, T19) U9(f458_out1, T19) -> U10(f459_in(T19), T19) U10(f459_out1(T53, X25), T19) -> f192_out1(T53, X25) f459_in(T19) -> U11(f458_in, T19) U11(f458_out1, T19) -> U12(f598_in(T19), T19) U12(f598_out1(T112, T111), T19) -> f459_out1(T112, T111) f495_in -> U13(f191_in) U13(f191_out1) -> U14(f498_in) U14(f498_out1) -> f495_out1 f498_in -> U15(f458_in) U15(f458_out1) -> U16(f542_in) U16(f542_out1) -> f498_out1 f542_in -> U17(f458_in) U17(f458_out1) -> U18(f547_in) U18(f547_out1) -> f542_out1 Q is empty. ---------------------------------------- (115) QTRSRRRProof (EQUIVALENT) Used ordering: f2_in/1(YES) []/0) f2_out1/0) ./2(YES,YES) U1/2(YES,YES) f63_in/1(YES) f63_out1/2(YES,YES) f347_in/0) f347_out1/0) U2/1)YES( f191_in/0) U3/1)YES( f191_out1/0) f458_in/0) f458_out1/0) U4/1)YES( f495_in/0) f495_out1/0) f547_in/0) f547_out1/0) U5/1)YES( f598_in/1(YES) f598_out1/2(YES,YES) U6/2(YES,YES) U7/2(YES,YES) U8/2(YES,YES) f192_in/1(YES) f192_out1/2(YES,YES) U9/2(YES,YES) U10/2(YES,YES) f459_in/1(YES) f459_out1/2(YES,YES) U11/2(YES,YES) U12/2(YES,YES) U13/1)YES( U14/1)YES( f498_in/0) f498_out1/0) U15/1)YES( U16/1)YES( f542_in/0) f542_out1/0) U17/1)YES( U18/1)YES( Quasi precedence: f2_in_1 > U1_2 > f2_out1 f2_in_1 > f63_in_1 > [U7_2, f192_in_1] > [U9_2, f459_in_1] > [f347_in, f347_out1, f191_in, f191_out1, f458_in, f458_out1, f495_in, f495_out1, f547_in, f547_out1, f498_in, f498_out1, f542_in, f542_out1] > U8_2 > f63_out1_2 f2_in_1 > f63_in_1 > [U7_2, f192_in_1] > [U9_2, f459_in_1] > [f347_in, f347_out1, f191_in, f191_out1, f458_in, f458_out1, f495_in, f495_out1, f547_in, f547_out1, f498_in, f498_out1, f542_in, f542_out1] > [f192_out1_2, U10_2] > f63_out1_2 f2_in_1 > f63_in_1 > [U7_2, f192_in_1] > [U9_2, f459_in_1] > [f347_in, f347_out1, f191_in, f191_out1, f458_in, f458_out1, f495_in, f495_out1, f547_in, f547_out1, f498_in, f498_out1, f542_in, f542_out1] > U12_2 f2_in_1 > f63_in_1 > [U7_2, f192_in_1] > [U9_2, f459_in_1] > U11_2 > [[], f598_in_1] > U6_2 > ._2 > f2_out1 f2_in_1 > f63_in_1 > [U7_2, f192_in_1] > [U9_2, f459_in_1] > U11_2 > [[], f598_in_1] > U6_2 > ._2 > [f598_out1_2, f459_out1_2] > [f192_out1_2, U10_2] > f63_out1_2 f2_in_1 > f63_in_1 > [U7_2, f192_in_1] > [U9_2, f459_in_1] > U11_2 > U12_2 Status: f2_in_1: multiset status []: multiset status f2_out1: multiset status ._2: multiset status U1_2: multiset status f63_in_1: [1] f63_out1_2: multiset status f347_in: multiset status f347_out1: multiset status f191_in: multiset status f191_out1: multiset status f458_in: multiset status f458_out1: multiset status f495_in: multiset status f495_out1: multiset status f547_in: multiset status f547_out1: multiset status f598_in_1: multiset status f598_out1_2: multiset status U6_2: [1,2] U7_2: multiset status U8_2: multiset status f192_in_1: multiset status f192_out1_2: multiset status U9_2: multiset status U10_2: multiset status f459_in_1: multiset status f459_out1_2: multiset status U11_2: multiset status U12_2: multiset status f498_in: multiset status f498_out1: multiset status f542_in: multiset status f542_out1: multiset status With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: f2_in([]) -> f2_out1 f2_in(.(T7, [])) -> f2_out1 f2_in(T19) -> U1(f63_in(T19), T19) U1(f63_out1(X24, X25), T19) -> f2_out1 f598_in(T119) -> f598_out1([], T119) f598_in(T124) -> f598_out1(T124, []) f598_in(.(T144, T139)) -> U6(f598_in(T139), .(T144, T139)) U6(f598_out1(.(T144, T146), T145), .(T144, T139)) -> f598_out1(.(T144, T146), .(T144, T145)) f63_in(T19) -> U7(f191_in, T19) U7(f191_out1, T19) -> U8(f192_in(T19), T19) U8(f192_out1(X24, X25), T19) -> f63_out1(X24, X25) f192_in(T19) -> U9(f458_in, T19) U9(f458_out1, T19) -> U10(f459_in(T19), T19) U10(f459_out1(T53, X25), T19) -> f192_out1(T53, X25) f459_in(T19) -> U11(f458_in, T19) U11(f458_out1, T19) -> U12(f598_in(T19), T19) U12(f598_out1(T112, T111), T19) -> f459_out1(T112, T111) ---------------------------------------- (116) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f347_in -> f347_out1 f347_in -> U2(f347_in) U2(f347_out1) -> f347_out1 f191_in -> U3(f347_in) U3(f347_out1) -> f191_out1 f458_in -> f458_out1 f458_in -> U4(f495_in) U4(f495_out1) -> f458_out1 f547_in -> f547_out1 f547_in -> U5(f547_in) U5(f547_out1) -> f547_out1 f495_in -> U13(f191_in) U13(f191_out1) -> U14(f498_in) U14(f498_out1) -> f495_out1 f498_in -> U15(f458_in) U15(f458_out1) -> U16(f542_in) U16(f542_out1) -> f498_out1 f542_in -> U17(f458_in) U17(f458_out1) -> U18(f547_in) U18(f547_out1) -> f542_out1 Q is empty. ---------------------------------------- (117) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (118) Obligation: Q DP problem: The TRS P consists of the following rules: F347_IN -> U2^1(f347_in) F347_IN -> F347_IN F191_IN -> U3^1(f347_in) F191_IN -> F347_IN F458_IN -> U4^1(f495_in) F458_IN -> F495_IN F547_IN -> U5^1(f547_in) F547_IN -> F547_IN F495_IN -> U13^1(f191_in) F495_IN -> F191_IN U13^1(f191_out1) -> U14^1(f498_in) U13^1(f191_out1) -> F498_IN F498_IN -> U15^1(f458_in) F498_IN -> F458_IN U15^1(f458_out1) -> U16^1(f542_in) U15^1(f458_out1) -> F542_IN F542_IN -> U17^1(f458_in) F542_IN -> F458_IN U17^1(f458_out1) -> U18^1(f547_in) U17^1(f458_out1) -> F547_IN The TRS R consists of the following rules: f347_in -> f347_out1 f347_in -> U2(f347_in) U2(f347_out1) -> f347_out1 f191_in -> U3(f347_in) U3(f347_out1) -> f191_out1 f458_in -> f458_out1 f458_in -> U4(f495_in) U4(f495_out1) -> f458_out1 f547_in -> f547_out1 f547_in -> U5(f547_in) U5(f547_out1) -> f547_out1 f495_in -> U13(f191_in) U13(f191_out1) -> U14(f498_in) U14(f498_out1) -> f495_out1 f498_in -> U15(f458_in) U15(f458_out1) -> U16(f542_in) U16(f542_out1) -> f498_out1 f542_in -> U17(f458_in) U17(f458_out1) -> U18(f547_in) U18(f547_out1) -> f542_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (119) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 11 less nodes. ---------------------------------------- (120) Complex Obligation (AND) ---------------------------------------- (121) Obligation: Q DP problem: The TRS P consists of the following rules: F547_IN -> F547_IN The TRS R consists of the following rules: f347_in -> f347_out1 f347_in -> U2(f347_in) U2(f347_out1) -> f347_out1 f191_in -> U3(f347_in) U3(f347_out1) -> f191_out1 f458_in -> f458_out1 f458_in -> U4(f495_in) U4(f495_out1) -> f458_out1 f547_in -> f547_out1 f547_in -> U5(f547_in) U5(f547_out1) -> f547_out1 f495_in -> U13(f191_in) U13(f191_out1) -> U14(f498_in) U14(f498_out1) -> f495_out1 f498_in -> U15(f458_in) U15(f458_out1) -> U16(f542_in) U16(f542_out1) -> f498_out1 f542_in -> U17(f458_in) U17(f458_out1) -> U18(f547_in) U18(f547_out1) -> f542_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (122) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (123) Obligation: Q DP problem: The TRS P consists of the following rules: F547_IN -> F547_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (124) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = F547_IN evaluates to t =F547_IN Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from F547_IN to F547_IN. ---------------------------------------- (125) NO ---------------------------------------- (126) Obligation: Q DP problem: The TRS P consists of the following rules: F347_IN -> F347_IN The TRS R consists of the following rules: f347_in -> f347_out1 f347_in -> U2(f347_in) U2(f347_out1) -> f347_out1 f191_in -> U3(f347_in) U3(f347_out1) -> f191_out1 f458_in -> f458_out1 f458_in -> U4(f495_in) U4(f495_out1) -> f458_out1 f547_in -> f547_out1 f547_in -> U5(f547_in) U5(f547_out1) -> f547_out1 f495_in -> U13(f191_in) U13(f191_out1) -> U14(f498_in) U14(f498_out1) -> f495_out1 f498_in -> U15(f458_in) U15(f458_out1) -> U16(f542_in) U16(f542_out1) -> f498_out1 f542_in -> U17(f458_in) U17(f458_out1) -> U18(f547_in) U18(f547_out1) -> f542_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (127) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (128) Obligation: Q DP problem: The TRS P consists of the following rules: F347_IN -> F347_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (129) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = F347_IN evaluates to t =F347_IN Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from F347_IN to F347_IN. ---------------------------------------- (130) NO ---------------------------------------- (131) Obligation: Q DP problem: The TRS P consists of the following rules: F495_IN -> U13^1(f191_in) U13^1(f191_out1) -> F498_IN F498_IN -> U15^1(f458_in) U15^1(f458_out1) -> F542_IN F542_IN -> F458_IN F458_IN -> F495_IN F498_IN -> F458_IN The TRS R consists of the following rules: f347_in -> f347_out1 f347_in -> U2(f347_in) U2(f347_out1) -> f347_out1 f191_in -> U3(f347_in) U3(f347_out1) -> f191_out1 f458_in -> f458_out1 f458_in -> U4(f495_in) U4(f495_out1) -> f458_out1 f547_in -> f547_out1 f547_in -> U5(f547_in) U5(f547_out1) -> f547_out1 f495_in -> U13(f191_in) U13(f191_out1) -> U14(f498_in) U14(f498_out1) -> f495_out1 f498_in -> U15(f458_in) U15(f458_out1) -> U16(f542_in) U16(f542_out1) -> f498_out1 f542_in -> U17(f458_in) U17(f458_out1) -> U18(f547_in) U18(f547_out1) -> f542_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (132) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 1, "program": { "directives": [], "clauses": [ [ "(mergesort ([]) ([]))", null ], [ "(mergesort (. X ([])) (. X ([])))", null ], [ "(mergesort (. X (. Y Xs)) Ys)", "(',' (split (. X (. Y Xs)) X1s X2s) (',' (mergesort X1s Y1s) (',' (mergesort X2s Y2s) (merge Y1s Y2s Ys))))" ], [ "(split ([]) ([]) ([]))", null ], [ "(split (. X Xs) (. X Ys) Zs)", "(split Xs Zs Ys)" ], [ "(merge ([]) Xs Xs)", null ], [ "(merge Xs ([]) Xs)", null ], [ "(merge (. X Xs) (. Y Ys) (. X Zs))", "(',' (= X Y) (merge (. X Xs) Ys Zs))" ] ] }, "graph": { "nodes": { "193": { "goal": [ { "clause": 1, "scope": 1, "term": "(mergesort T1 ([]))" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 ([]))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "194": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "590": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "593": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T112 T113) (merge (. T112 T115) T114 X153))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X153"], "exprvars": [] } }, "596": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "750": { "goal": [{ "clause": 7, "scope": 12, "term": "(merge T251 T250 T224)" }], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "630": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "751": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "631": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "752": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "599": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T119 T120) T118 X153)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X153"], "exprvars": [] } }, "632": { "goal": [ { "clause": -1, "scope": -1, "term": "(true)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 (. T140 ([])))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T140"], "free": [], "exprvars": [] } }, "753": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "633": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [ [ "(mergesort T1 T2)", "(mergesort ([]) ([]))" ], [ "(mergesort T1 T2)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": ["X174"], "exprvars": [] } }, "754": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T275 T280) (merge (. T275 T282) T281 T279))" }], "kb": { "nonunifying": [[ "(mergesort T252 (. T275 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T275", "T279" ], "free": ["X174"], "exprvars": [] } }, "238": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T10 (. T11 T12)) X10 X11) (',' (mergesort X10 X12) (',' (mergesort X11 X13) (merge X12 X13 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X10", "X11", "X12", "X13" ], "exprvars": [] } }, "634": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 (. T140 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T140"], "free": [], "exprvars": [] } }, "755": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "514": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "635": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T149 (. T150 T151)) X183 X184) (',' (mergesort X183 X185) (',' (mergesort X184 X186) (merge X185 X186 (. T148 ([]))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [ "X183", "X184", "X185", "X186" ], "exprvars": [] } }, "756": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T284 T286) T285 T279)" }], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "636": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "757": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "516": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "637": { "goal": [ { "clause": 3, "scope": 9, "term": "(',' (split (. T149 (. T150 T151)) X183 X184) (',' (mergesort X183 X185) (',' (mergesort X184 X186) (merge X185 X186 (. T148 ([]))))))" }, { "clause": 4, "scope": 9, "term": "(',' (split (. T149 (. T150 T151)) X183 X184) (',' (mergesort X183 X185) (',' (mergesort X184 X186) (merge X185 X186 (. T148 ([]))))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [ "X183", "X184", "X185", "X186" ], "exprvars": [] } }, "758": { "goal": [ { "clause": 5, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }, { "clause": 6, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }, { "clause": 7, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" } ], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "517": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "638": { "goal": [{ "clause": 4, "scope": 9, "term": "(',' (split (. T149 (. T150 T151)) X183 X184) (',' (mergesort X183 X185) (',' (mergesort X184 X186) (merge X185 X186 (. T148 ([]))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [ "X183", "X184", "X185", "X186" ], "exprvars": [] } }, "759": { "goal": [ { "clause": 6, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }, { "clause": 7, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" } ], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "639": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T164 T165) X204 X203) (',' (mergesort (. T166 X203) X185) (',' (mergesort X204 X186) (merge X185 X186 (. T148 ([]))))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [ "X185", "X186", "X203", "X204" ], "exprvars": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "760": { "goal": [{ "clause": 6, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "761": { "goal": [{ "clause": 7, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "762": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "4": { "goal": [ { "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "521": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T62 (. T63 T64)) X91 X92) (',' (mergesort X91 X93) (',' (mergesort X92 X94) (merge X93 X94 X95))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X95", "X91", "X92", "X93", "X94" ], "exprvars": [] } }, "763": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "522": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "764": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "402": { "goal": [ { "clause": 3, "scope": 4, "term": "(split T38 X49 X48)" }, { "clause": 4, "scope": 4, "term": "(split T38 X49 X48)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "765": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T307 T312) (merge (. T307 T314) T313 T311))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T307", "T311" ], "free": [], "exprvars": [] } }, "249": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "766": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "525": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T62 (. T63 T64)) X91 X92)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X91", "X92" ], "exprvars": [] } }, "767": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "526": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T65 X93) (',' (mergesort T66 X94) (merge X93 X94 X95)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X95", "X93", "X94" ], "exprvars": [] } }, "768": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "406": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "769": { "goal": [ { "clause": 5, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }, { "clause": 6, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }, { "clause": 7, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "407": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "529": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "28": { "goal": [ { "clause": -1, "scope": -1, "term": "(true)" }, { "clause": 1, "scope": 1, "term": "(mergesort T1 ([]))" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 ([]))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "770": { "goal": [ { "clause": 6, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }, { "clause": 7, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "771": { "goal": [{ "clause": 6, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "530": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T68 X94) (merge T67 X94 X95))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X95", "X94" ], "exprvars": [] } }, "772": { "goal": [{ "clause": 7, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "773": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "499": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "774": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "412": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "533": { "goal": [ { "clause": 0, "scope": 6, "term": "(mergesort T65 X93)" }, { "clause": 1, "scope": 6, "term": "(mergesort T65 X93)" }, { "clause": 2, "scope": 6, "term": "(mergesort T65 X93)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "775": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "413": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "534": { "goal": [{ "clause": 0, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "776": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T339 T344) (merge (. T339 T346) T345 T343))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T339", "T343" ], "free": [], "exprvars": [] } }, "535": { "goal": [ { "clause": 1, "scope": 6, "term": "(mergesort T65 X93)" }, { "clause": 2, "scope": 6, "term": "(mergesort T65 X93)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "777": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "415": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "536": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "778": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T348 T350) T349 T343)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T343", "T348" ], "free": [], "exprvars": [] } }, "537": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "779": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "538": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "539": { "goal": [{ "clause": 1, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "31": { "goal": [ { "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" } ], "kb": { "nonunifying": [[ "(mergesort T1 T2)", "(mergesort ([]) ([]))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "383": { "goal": [ { "clause": 3, "scope": 3, "term": "(split (. T25 T26) X31 X30)" }, { "clause": 4, "scope": 3, "term": "(split (. T25 T26) X31 X30)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "384": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T25 T26) X31 X30)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "264": { "goal": [ { "clause": 3, "scope": 2, "term": "(',' (split (. T10 (. T11 T12)) X10 X11) (',' (mergesort X10 X12) (',' (mergesort X11 X13) (merge X12 X13 ([])))))" }, { "clause": 4, "scope": 2, "term": "(',' (split (. T10 (. T11 T12)) X10 X11) (',' (mergesort X10 X12) (',' (mergesort X11 X13) (merge X12 X13 ([])))))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X10", "X11", "X12", "X13" ], "exprvars": [] } }, "540": { "goal": [{ "clause": 2, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "543": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "544": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "424": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X67 X66)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X66", "X67" ], "exprvars": [] } }, "545": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "426": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "668": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T164 T165) X204 X203)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X203", "X204" ], "exprvars": [] } }, "548": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T83 (. T84 T85)) X119 X120) (',' (mergesort X119 X121) (',' (mergesort X120 X122) (merge X121 X122 X123))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X123", "X119", "X120", "X121", "X122" ], "exprvars": [] } }, "669": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort (. T169 T168) X185) (',' (mergesort T167 X186) (merge X185 X186 (. T148 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [ "X185", "X186" ], "exprvars": [] } }, "549": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "670": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T169 T168) X185)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X185"], "exprvars": [] } }, "671": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T171 X186) (merge T170 X186 (. T148 ([]))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": ["X186"], "exprvars": [] } }, "397": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "672": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T171 X186)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X186"], "exprvars": [] } }, "277": { "goal": [{ "clause": 4, "scope": 2, "term": "(',' (split (. T10 (. T11 T12)) X10 X11) (',' (mergesort X10 X12) (',' (mergesort X11 X13) (merge X12 X13 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X10", "X11", "X12", "X13" ], "exprvars": [] } }, "673": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "674": { "goal": [ { "clause": 5, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }, { "clause": 6, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }, { "clause": 7, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "558": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T68 X94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X94"], "exprvars": [] } }, "559": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "715": { "goal": [{ "clause": 5, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "716": { "goal": [ { "clause": 6, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }, { "clause": 7, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "717": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "718": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "719": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "720": { "goal": [{ "clause": 6, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "600": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "721": { "goal": [{ "clause": 7, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "568": { "goal": [ { "clause": 5, "scope": 7, "term": "(merge T87 T86 X95)" }, { "clause": 6, "scope": 7, "term": "(merge T87 T86 X95)" }, { "clause": 7, "scope": 7, "term": "(merge T87 T86 X95)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "722": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "723": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "724": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "725": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T206 T210) (merge (. T206 T212) T211 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T206"], "free": [], "exprvars": [] } }, "726": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "727": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T214 T216) T215 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T214"], "free": [], "exprvars": [] } }, "728": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "729": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T225 (. T226 T227)) X242 X243) (',' (mergesort X242 X244) (',' (mergesort X243 X245) (merge X244 X245 T224))))" }], "kb": { "nonunifying": [ [ "(mergesort T1 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T1 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": [ "X174", "X242", "X243", "X244", "X245" ], "exprvars": [] } }, "609": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T47 X13)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X13"], "exprvars": [] } }, "570": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "571": { "goal": [ { "clause": 6, "scope": 7, "term": "(merge T87 T86 X95)" }, { "clause": 7, "scope": 7, "term": "(merge T87 T86 X95)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "333": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T25 T26) X31 X30) (',' (mergesort (. T27 X30) X12) (',' (mergesort X31 X13) (merge X12 X13 ([])))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X12", "X13", "X30", "X31" ], "exprvars": [] } }, "334": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T25 T26) X31 X30)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "576": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "730": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "577": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "731": { "goal": [ { "clause": 3, "scope": 11, "term": "(',' (split (. T225 (. T226 T227)) X242 X243) (',' (mergesort X242 X244) (',' (mergesort X243 X245) (merge X244 X245 T224))))" }, { "clause": 4, "scope": 11, "term": "(',' (split (. T225 (. T226 T227)) X242 X243) (',' (mergesort X242 X244) (',' (mergesort X243 X245) (merge X244 X245 T224))))" } ], "kb": { "nonunifying": [ [ "(mergesort T1 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T1 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": [ "X174", "X242", "X243", "X244", "X245" ], "exprvars": [] } }, "336": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort (. T30 T29) X12) (',' (mergesort T28 X13) (merge X12 X13 ([]))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X12", "X13" ], "exprvars": [] } }, "578": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "732": { "goal": [{ "clause": 4, "scope": 11, "term": "(',' (split (. T225 (. T226 T227)) X242 X243) (',' (mergesort X242 X244) (',' (mergesort X243 X245) (merge X244 X245 T224))))" }], "kb": { "nonunifying": [ [ "(mergesort T1 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T1 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": [ "X174", "X242", "X243", "X244", "X245" ], "exprvars": [] } }, "612": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "733": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T240 T241) X263 X262) (',' (mergesort (. T242 X262) X244) (',' (mergesort X263 X245) (merge X244 X245 T224))))" }], "kb": { "nonunifying": [ [ "(mergesort T1 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T1 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": [ "X174", "X244", "X245", "X262", "X263" ], "exprvars": [] } }, "734": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T240 T241) X263 X262)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X262", "X263" ], "exprvars": [] } }, "735": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort (. T245 T244) X244) (',' (mergesort T243 X245) (merge X244 X245 T224)))" }], "kb": { "nonunifying": [ [ "(mergesort T246 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T246 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": [ "X174", "X244", "X245" ], "exprvars": [] } }, "736": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T245 T244) X244)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X244"], "exprvars": [] } }, "616": { "goal": [ { "clause": 5, "scope": 8, "term": "(merge T122 T121 ([]))" }, { "clause": 6, "scope": 8, "term": "(merge T122 T121 ([]))" }, { "clause": 7, "scope": 8, "term": "(merge T122 T121 ([]))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "737": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T248 X245) (merge T247 X245 T224))" }], "kb": { "nonunifying": [ [ "(mergesort T249 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T249 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": [ "X174", "X245" ], "exprvars": [] } }, "617": { "goal": [{ "clause": 5, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "738": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T248 X245)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X245"], "exprvars": [] } }, "618": { "goal": [ { "clause": 6, "scope": 8, "term": "(merge T122 T121 ([]))" }, { "clause": 7, "scope": 8, "term": "(merge T122 T121 ([]))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "739": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T251 T250 T224)" }], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "583": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "584": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "620": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "588": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "621": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "501": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T47 X13) (merge T46 X13 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X13"], "exprvars": [] } }, "589": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "743": { "goal": [ { "clause": 5, "scope": 12, "term": "(merge T251 T250 T224)" }, { "clause": 6, "scope": 12, "term": "(merge T251 T250 T224)" }, { "clause": 7, "scope": 12, "term": "(merge T251 T250 T224)" } ], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "623": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "744": { "goal": [{ "clause": 5, "scope": 12, "term": "(merge T251 T250 T224)" }], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "503": { "goal": [ { "clause": 0, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }, { "clause": 1, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }, { "clause": 2, "scope": 5, "term": "(mergesort (. T30 T29) X12)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "745": { "goal": [ { "clause": 6, "scope": 12, "term": "(merge T251 T250 T224)" }, { "clause": 7, "scope": 12, "term": "(merge T251 T250 T224)" } ], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "504": { "goal": [ { "clause": 1, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }, { "clause": 2, "scope": 5, "term": "(mergesort (. T30 T29) X12)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "746": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "626": { "goal": [{ "clause": 6, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "747": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "627": { "goal": [{ "clause": 7, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "748": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "628": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "749": { "goal": [{ "clause": 6, "scope": 12, "term": "(merge T251 T250 T224)" }], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "508": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "629": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "509": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } } }, "edges": [ { "from": 1, "to": 4, "label": "CASE" }, { "from": 4, "to": 28, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 4, "to": 31, "label": "EVAL-BACKTRACK" }, { "from": 28, "to": 193, "label": "SUCCESS" }, { "from": 31, "to": 632, "label": "EVAL with clause\nmergesort(.(X174, []), .(X174, [])).\nand substitutionX174 -> T140,\nT1 -> .(T140, []),\nT2 -> .(T140, [])" }, { "from": 31, "to": 633, "label": "EVAL-BACKTRACK" }, { "from": 193, "to": 194, "label": "BACKTRACK\nfor clause: mergesort(.(X, []), .(X, []))because of non-unification" }, { "from": 194, "to": 238, "label": "EVAL with clause\nmergesort(.(X6, .(X7, X8)), X9) :- ','(split(.(X6, .(X7, X8)), X10, X11), ','(mergesort(X10, X12), ','(mergesort(X11, X13), merge(X12, X13, X9)))).\nand substitutionX6 -> T10,\nX7 -> T11,\nX8 -> T12,\nT1 -> .(T10, .(T11, T12)),\nX9 -> [],\nT7 -> T10,\nT8 -> T11,\nT9 -> T12" }, { "from": 194, "to": 249, "label": "EVAL-BACKTRACK" }, { "from": 238, "to": 264, "label": "CASE" }, { "from": 264, "to": 277, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 277, "to": 333, "label": "ONLY EVAL with clause\nsplit(.(X26, X27), .(X26, X28), X29) :- split(X27, X29, X28).\nand substitutionT10 -> T27,\nX26 -> T27,\nT11 -> T25,\nT12 -> T26,\nX27 -> .(T25, T26),\nX28 -> X30,\nX10 -> .(T27, X30),\nX11 -> X31,\nX29 -> X31,\nT23 -> T25,\nT24 -> T26,\nT22 -> T27" }, { "from": 333, "to": 334, "label": "SPLIT 1" }, { "from": 333, "to": 336, "label": "SPLIT 2\nreplacements:X31 -> T28,\nX30 -> T29,\nT27 -> T30" }, { "from": 334, "to": 383, "label": "CASE" }, { "from": 336, "to": 499, "label": "SPLIT 1" }, { "from": 336, "to": 501, "label": "SPLIT 2\nreplacements:X12 -> T46,\nT28 -> T47" }, { "from": 383, "to": 384, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 384, "to": 397, "label": "ONLY EVAL with clause\nsplit(.(X44, X45), .(X44, X46), X47) :- split(X45, X47, X46).\nand substitutionT25 -> T36,\nX44 -> T36,\nT26 -> T38,\nX45 -> T38,\nX46 -> X48,\nX31 -> .(T36, X48),\nX30 -> X49,\nX47 -> X49,\nT37 -> T38" }, { "from": 397, "to": 402, "label": "CASE" }, { "from": 402, "to": 406, "label": "PARALLEL" }, { "from": 402, "to": 407, "label": "PARALLEL" }, { "from": 406, "to": 412, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT38 -> [],\nX49 -> [],\nX48 -> []" }, { "from": 406, "to": 413, "label": "EVAL-BACKTRACK" }, { "from": 407, "to": 424, "label": "EVAL with clause\nsplit(.(X62, X63), .(X62, X64), X65) :- split(X63, X65, X64).\nand substitutionX62 -> T43,\nX63 -> T45,\nT38 -> .(T43, T45),\nX64 -> X66,\nX49 -> .(T43, X66),\nX48 -> X67,\nX65 -> X67,\nT44 -> T45" }, { "from": 407, "to": 426, "label": "EVAL-BACKTRACK" }, { "from": 412, "to": 415, "label": "SUCCESS" }, { "from": 424, "to": 397, "label": "INSTANCE with matching:\nT38 -> T45\nX49 -> X67\nX48 -> X66" }, { "from": 499, "to": 503, "label": "CASE" }, { "from": 501, "to": 609, "label": "SPLIT 1" }, { "from": 501, "to": 612, "label": "SPLIT 2\nreplacements:X13 -> T121,\nT46 -> T122" }, { "from": 503, "to": 504, "label": "BACKTRACK\nfor clause: mergesort([], [])because of non-unification" }, { "from": 504, "to": 508, "label": "PARALLEL" }, { "from": 504, "to": 509, "label": "PARALLEL" }, { "from": 508, "to": 514, "label": "EVAL with clause\nmergesort(.(X72, []), .(X72, [])).\nand substitutionT30 -> T52,\nX72 -> T52,\nT29 -> [],\nX12 -> .(T52, [])" }, { "from": 508, "to": 516, "label": "EVAL-BACKTRACK" }, { "from": 509, "to": 521, "label": "EVAL with clause\nmergesort(.(X87, .(X88, X89)), X90) :- ','(split(.(X87, .(X88, X89)), X91, X92), ','(mergesort(X91, X93), ','(mergesort(X92, X94), merge(X93, X94, X90)))).\nand substitutionT30 -> T62,\nX87 -> T62,\nX88 -> T63,\nX89 -> T64,\nT29 -> .(T63, T64),\nX12 -> X95,\nX90 -> X95,\nT59 -> T62,\nT60 -> T63,\nT61 -> T64" }, { "from": 509, "to": 522, "label": "EVAL-BACKTRACK" }, { "from": 514, "to": 517, "label": "SUCCESS" }, { "from": 521, "to": 525, "label": "SPLIT 1" }, { "from": 521, "to": 526, "label": "SPLIT 2\nreplacements:X91 -> T65,\nX92 -> T66" }, { "from": 525, "to": 334, "label": "INSTANCE with matching:\nT25 -> T62\nT26 -> .(T63, T64)\nX31 -> X91\nX30 -> X92" }, { "from": 526, "to": 529, "label": "SPLIT 1" }, { "from": 526, "to": 530, "label": "SPLIT 2\nreplacements:X93 -> T67,\nT66 -> T68" }, { "from": 529, "to": 533, "label": "CASE" }, { "from": 530, "to": 558, "label": "SPLIT 1" }, { "from": 530, "to": 559, "label": "SPLIT 2\nreplacements:X94 -> T86,\nT67 -> T87" }, { "from": 533, "to": 534, "label": "PARALLEL" }, { "from": 533, "to": 535, "label": "PARALLEL" }, { "from": 534, "to": 536, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT65 -> [],\nX93 -> []" }, { "from": 534, "to": 537, "label": "EVAL-BACKTRACK" }, { "from": 535, "to": 539, "label": "PARALLEL" }, { "from": 535, "to": 540, "label": "PARALLEL" }, { "from": 536, "to": 538, "label": "SUCCESS" }, { "from": 539, "to": 543, "label": "EVAL with clause\nmergesort(.(X100, []), .(X100, [])).\nand substitutionX100 -> T73,\nT65 -> .(T73, []),\nX93 -> .(T73, [])" }, { "from": 539, "to": 544, "label": "EVAL-BACKTRACK" }, { "from": 540, "to": 548, "label": "EVAL with clause\nmergesort(.(X115, .(X116, X117)), X118) :- ','(split(.(X115, .(X116, X117)), X119, X120), ','(mergesort(X119, X121), ','(mergesort(X120, X122), merge(X121, X122, X118)))).\nand substitutionX115 -> T83,\nX116 -> T84,\nX117 -> T85,\nT65 -> .(T83, .(T84, T85)),\nX93 -> X123,\nX118 -> X123,\nT80 -> T83,\nT81 -> T84,\nT82 -> T85" }, { "from": 540, "to": 549, "label": "EVAL-BACKTRACK" }, { "from": 543, "to": 545, "label": "SUCCESS" }, { "from": 548, "to": 521, "label": "INSTANCE with matching:\nT62 -> T83\nT63 -> T84\nT64 -> T85\nX91 -> X119\nX92 -> X120\nX93 -> X121\nX94 -> X122\nX95 -> X123" }, { "from": 558, "to": 529, "label": "INSTANCE with matching:\nT65 -> T68\nX93 -> X94" }, { "from": 559, "to": 568, "label": "CASE" }, { "from": 568, "to": 570, "label": "PARALLEL" }, { "from": 568, "to": 571, "label": "PARALLEL" }, { "from": 570, "to": 576, "label": "EVAL with clause\nmerge([], X130, X130).\nand substitutionT87 -> [],\nT86 -> T94,\nX130 -> T94,\nX95 -> T94" }, { "from": 570, "to": 577, "label": "EVAL-BACKTRACK" }, { "from": 571, "to": 583, "label": "PARALLEL" }, { "from": 571, "to": 584, "label": "PARALLEL" }, { "from": 576, "to": 578, "label": "SUCCESS" }, { "from": 583, "to": 588, "label": "EVAL with clause\nmerge(X135, [], X135).\nand substitutionT87 -> T99,\nX135 -> T99,\nT86 -> [],\nX95 -> T99" }, { "from": 583, "to": 589, "label": "EVAL-BACKTRACK" }, { "from": 584, "to": 593, "label": "EVAL with clause\nmerge(.(X148, X149), .(X150, X151), .(X148, X152)) :- ','(=(X148, X150), merge(.(X148, X149), X151, X152)).\nand substitutionX148 -> T112,\nX149 -> T115,\nT87 -> .(T112, T115),\nX150 -> T113,\nX151 -> T114,\nT86 -> .(T113, T114),\nX152 -> X153,\nX95 -> .(T112, X153),\nT108 -> T112,\nT110 -> T113,\nT111 -> T114,\nT109 -> T115" }, { "from": 584, "to": 596, "label": "EVAL-BACKTRACK" }, { "from": 588, "to": 590, "label": "SUCCESS" }, { "from": 593, "to": 599, "label": "UNIFY CASE with substitutionT112 -> T119,\nT113 -> T119,\nT114 -> T118,\nT117 -> T119,\nT115 -> T120" }, { "from": 593, "to": 600, "label": "UNIFY-BACKTRACK" }, { "from": 599, "to": 559, "label": "INSTANCE with matching:\nT87 -> .(T119, T120)\nT86 -> T118\nX95 -> X153" }, { "from": 609, "to": 529, "label": "INSTANCE with matching:\nT65 -> T47\nX93 -> X13" }, { "from": 612, "to": 616, "label": "CASE" }, { "from": 616, "to": 617, "label": "PARALLEL" }, { "from": 616, "to": 618, "label": "PARALLEL" }, { "from": 617, "to": 620, "label": "EVAL with clause\nmerge([], X162, X162).\nand substitutionT122 -> [],\nT121 -> [],\nX162 -> [],\nT129 -> []" }, { "from": 617, "to": 621, "label": "EVAL-BACKTRACK" }, { "from": 618, "to": 626, "label": "PARALLEL" }, { "from": 618, "to": 627, "label": "PARALLEL" }, { "from": 620, "to": 623, "label": "SUCCESS" }, { "from": 626, "to": 628, "label": "EVAL with clause\nmerge(X167, [], X167).\nand substitutionT122 -> [],\nX167 -> [],\nT121 -> [],\nT134 -> []" }, { "from": 626, "to": 629, "label": "EVAL-BACKTRACK" }, { "from": 627, "to": 631, "label": "BACKTRACK\nfor clause: merge(.(X, Xs), .(Y, Ys), .(X, Zs)) :- ','(=(X, Y), merge(.(X, Xs), Ys, Zs))because of non-unification" }, { "from": 628, "to": 630, "label": "SUCCESS" }, { "from": 632, "to": 634, "label": "SUCCESS" }, { "from": 633, "to": 729, "label": "EVAL with clause\nmergesort(.(X238, .(X239, X240)), X241) :- ','(split(.(X238, .(X239, X240)), X242, X243), ','(mergesort(X242, X244), ','(mergesort(X243, X245), merge(X244, X245, X241)))).\nand substitutionX238 -> T225,\nX239 -> T226,\nX240 -> T227,\nT1 -> .(T225, .(T226, T227)),\nT2 -> T224,\nX241 -> T224,\nT221 -> T225,\nT222 -> T226,\nT223 -> T227" }, { "from": 633, "to": 730, "label": "EVAL-BACKTRACK" }, { "from": 634, "to": 635, "label": "EVAL with clause\nmergesort(.(X179, .(X180, X181)), X182) :- ','(split(.(X179, .(X180, X181)), X183, X184), ','(mergesort(X183, X185), ','(mergesort(X184, X186), merge(X185, X186, X182)))).\nand substitutionX179 -> T149,\nX180 -> T150,\nX181 -> T151,\nT1 -> .(T149, .(T150, T151)),\nT140 -> T148,\nX182 -> .(T148, []),\nT145 -> T149,\nT146 -> T150,\nT147 -> T151" }, { "from": 634, "to": 636, "label": "EVAL-BACKTRACK" }, { "from": 635, "to": 637, "label": "CASE" }, { "from": 637, "to": 638, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 638, "to": 639, "label": "ONLY EVAL with clause\nsplit(.(X199, X200), .(X199, X201), X202) :- split(X200, X202, X201).\nand substitutionT149 -> T166,\nX199 -> T166,\nT150 -> T164,\nT151 -> T165,\nX200 -> .(T164, T165),\nX201 -> X203,\nX183 -> .(T166, X203),\nX184 -> X204,\nX202 -> X204,\nT162 -> T164,\nT163 -> T165,\nT161 -> T166" }, { "from": 639, "to": 668, "label": "SPLIT 1" }, { "from": 639, "to": 669, "label": "SPLIT 2\nreplacements:X204 -> T167,\nX203 -> T168,\nT166 -> T169" }, { "from": 668, "to": 334, "label": "INSTANCE with matching:\nT25 -> T164\nT26 -> T165\nX31 -> X204\nX30 -> X203" }, { "from": 669, "to": 670, "label": "SPLIT 1" }, { "from": 669, "to": 671, "label": "SPLIT 2\nreplacements:X185 -> T170,\nT167 -> T171" }, { "from": 670, "to": 499, "label": "INSTANCE with matching:\nT30 -> T169\nT29 -> T168\nX12 -> X185" }, { "from": 671, "to": 672, "label": "SPLIT 1" }, { "from": 671, "to": 673, "label": "SPLIT 2\nreplacements:X186 -> T172,\nT170 -> T173" }, { "from": 672, "to": 529, "label": "INSTANCE with matching:\nT65 -> T171\nX93 -> X186" }, { "from": 673, "to": 674, "label": "CASE" }, { "from": 674, "to": 715, "label": "PARALLEL" }, { "from": 674, "to": 716, "label": "PARALLEL" }, { "from": 715, "to": 717, "label": "EVAL with clause\nmerge([], X211, X211).\nand substitutionT173 -> [],\nT172 -> .(T187, []),\nX211 -> .(T187, []),\nT148 -> T187,\nT186 -> .(T187, [])" }, { "from": 715, "to": 718, "label": "EVAL-BACKTRACK" }, { "from": 716, "to": 720, "label": "PARALLEL" }, { "from": 716, "to": 721, "label": "PARALLEL" }, { "from": 717, "to": 719, "label": "SUCCESS" }, { "from": 720, "to": 722, "label": "EVAL with clause\nmerge(X216, [], X216).\nand substitutionT173 -> .(T197, []),\nX216 -> .(T197, []),\nT172 -> [],\nT148 -> T197,\nT196 -> .(T197, [])" }, { "from": 720, "to": 723, "label": "EVAL-BACKTRACK" }, { "from": 721, "to": 725, "label": "EVAL with clause\nmerge(.(X227, X228), .(X229, X230), .(X227, X231)) :- ','(=(X227, X229), merge(.(X227, X228), X230, X231)).\nand substitutionX227 -> T206,\nX228 -> T212,\nT173 -> .(T206, T212),\nX229 -> T210,\nX230 -> T211,\nT172 -> .(T210, T211),\nT148 -> T206,\nX231 -> [],\nT208 -> T210,\nT209 -> T211,\nT207 -> T212" }, { "from": 721, "to": 726, "label": "EVAL-BACKTRACK" }, { "from": 722, "to": 724, "label": "SUCCESS" }, { "from": 725, "to": 727, "label": "UNIFY CASE with substitutionT206 -> T214,\nT210 -> T214,\nT211 -> T215,\nT212 -> T216" }, { "from": 725, "to": 728, "label": "UNIFY-BACKTRACK" }, { "from": 727, "to": 612, "label": "INSTANCE with matching:\nT122 -> .(T214, T216)\nT121 -> T215" }, { "from": 729, "to": 731, "label": "CASE" }, { "from": 731, "to": 732, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 732, "to": 733, "label": "ONLY EVAL with clause\nsplit(.(X258, X259), .(X258, X260), X261) :- split(X259, X261, X260).\nand substitutionT225 -> T242,\nX258 -> T242,\nT226 -> T240,\nT227 -> T241,\nX259 -> .(T240, T241),\nX260 -> X262,\nX242 -> .(T242, X262),\nX243 -> X263,\nX261 -> X263,\nT238 -> T240,\nT239 -> T241,\nT237 -> T242" }, { "from": 733, "to": 734, "label": "SPLIT 1" }, { "from": 733, "to": 735, "label": "SPLIT 2\nreplacements:X263 -> T243,\nX262 -> T244,\nT242 -> T245,\nT1 -> T246" }, { "from": 734, "to": 334, "label": "INSTANCE with matching:\nT25 -> T240\nT26 -> T241\nX31 -> X263\nX30 -> X262" }, { "from": 735, "to": 736, "label": "SPLIT 1" }, { "from": 735, "to": 737, "label": "SPLIT 2\nreplacements:X244 -> T247,\nT243 -> T248,\nT246 -> T249" }, { "from": 736, "to": 499, "label": "INSTANCE with matching:\nT30 -> T245\nT29 -> T244\nX12 -> X244" }, { "from": 737, "to": 738, "label": "SPLIT 1" }, { "from": 737, "to": 739, "label": "SPLIT 2\nreplacements:X245 -> T250,\nT247 -> T251,\nT249 -> T252" }, { "from": 738, "to": 529, "label": "INSTANCE with matching:\nT65 -> T248\nX93 -> X245" }, { "from": 739, "to": 743, "label": "CASE" }, { "from": 743, "to": 744, "label": "PARALLEL" }, { "from": 743, "to": 745, "label": "PARALLEL" }, { "from": 744, "to": 746, "label": "EVAL with clause\nmerge([], X270, X270).\nand substitutionT251 -> [],\nT250 -> T259,\nX270 -> T259,\nT224 -> T259" }, { "from": 744, "to": 747, "label": "EVAL-BACKTRACK" }, { "from": 745, "to": 749, "label": "PARALLEL" }, { "from": 745, "to": 750, "label": "PARALLEL" }, { "from": 746, "to": 748, "label": "SUCCESS" }, { "from": 749, "to": 751, "label": "EVAL with clause\nmerge(X275, [], X275).\nand substitutionT251 -> T264,\nX275 -> T264,\nT250 -> [],\nT224 -> T264" }, { "from": 749, "to": 752, "label": "EVAL-BACKTRACK" }, { "from": 750, "to": 754, "label": "EVAL with clause\nmerge(.(X286, X287), .(X288, X289), .(X286, X290)) :- ','(=(X286, X288), merge(.(X286, X287), X289, X290)).\nand substitutionX286 -> T275,\nX287 -> T282,\nT251 -> .(T275, T282),\nX288 -> T280,\nX289 -> T281,\nT250 -> .(T280, T281),\nX290 -> T279,\nT224 -> .(T275, T279),\nT277 -> T280,\nT278 -> T281,\nT276 -> T282" }, { "from": 750, "to": 755, "label": "EVAL-BACKTRACK" }, { "from": 751, "to": 753, "label": "SUCCESS" }, { "from": 754, "to": 756, "label": "UNIFY CASE with substitutionT275 -> T284,\nT280 -> T284,\nT281 -> T285,\nT282 -> T286" }, { "from": 754, "to": 757, "label": "UNIFY-BACKTRACK" }, { "from": 756, "to": 758, "label": "CASE" }, { "from": 758, "to": 759, "label": "BACKTRACK\nfor clause: merge([], Xs, Xs)because of non-unification" }, { "from": 759, "to": 760, "label": "PARALLEL" }, { "from": 759, "to": 761, "label": "PARALLEL" }, { "from": 760, "to": 762, "label": "EVAL with clause\nmerge(X298, [], X298).\nand substitutionT284 -> T295,\nT286 -> T296,\nX298 -> .(T295, T296),\nT285 -> [],\nT279 -> .(T295, T296)" }, { "from": 760, "to": 763, "label": "EVAL-BACKTRACK" }, { "from": 761, "to": 765, "label": "EVAL with clause\nmerge(.(X309, X310), .(X311, X312), .(X309, X313)) :- ','(=(X309, X311), merge(.(X309, X310), X312, X313)).\nand substitutionT284 -> T307,\nX309 -> T307,\nT286 -> T314,\nX310 -> T314,\nX311 -> T312,\nX312 -> T313,\nT285 -> .(T312, T313),\nX313 -> T311,\nT279 -> .(T307, T311),\nT309 -> T312,\nT310 -> T313,\nT308 -> T314" }, { "from": 761, "to": 766, "label": "EVAL-BACKTRACK" }, { "from": 762, "to": 764, "label": "SUCCESS" }, { "from": 765, "to": 767, "label": "UNIFY CASE with substitutionT307 -> T316,\nT312 -> T316,\nT313 -> T317,\nT314 -> T318" }, { "from": 765, "to": 768, "label": "UNIFY-BACKTRACK" }, { "from": 767, "to": 769, "label": "CASE" }, { "from": 769, "to": 770, "label": "BACKTRACK\nfor clause: merge([], Xs, Xs)because of non-unification" }, { "from": 770, "to": 771, "label": "PARALLEL" }, { "from": 770, "to": 772, "label": "PARALLEL" }, { "from": 771, "to": 773, "label": "EVAL with clause\nmerge(X321, [], X321).\nand substitutionT316 -> T327,\nT318 -> T328,\nX321 -> .(T327, T328),\nT317 -> [],\nT311 -> .(T327, T328)" }, { "from": 771, "to": 774, "label": "EVAL-BACKTRACK" }, { "from": 772, "to": 776, "label": "EVAL with clause\nmerge(.(X332, X333), .(X334, X335), .(X332, X336)) :- ','(=(X332, X334), merge(.(X332, X333), X335, X336)).\nand substitutionT316 -> T339,\nX332 -> T339,\nT318 -> T346,\nX333 -> T346,\nX334 -> T344,\nX335 -> T345,\nT317 -> .(T344, T345),\nX336 -> T343,\nT311 -> .(T339, T343),\nT341 -> T344,\nT342 -> T345,\nT340 -> T346" }, { "from": 772, "to": 777, "label": "EVAL-BACKTRACK" }, { "from": 773, "to": 775, "label": "SUCCESS" }, { "from": 776, "to": 778, "label": "UNIFY CASE with substitutionT339 -> T348,\nT344 -> T348,\nT345 -> T349,\nT346 -> T350" }, { "from": 776, "to": 779, "label": "UNIFY-BACKTRACK" }, { "from": 778, "to": 767, "label": "INSTANCE with matching:\nT316 -> T348\nT318 -> T350\nT317 -> T349\nT311 -> T343" } ], "type": "Graph" } } ---------------------------------------- (133) Obligation: Triples: splitA(.(X1, X2), .(X1, X3), X4) :- splitA(X2, X4, X3). splitB(X1, X2, .(X1, X3), X4) :- splitA(X2, X4, X3). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- splitB(X1, .(X2, X3), X4, X5). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), mergesortE(X4, X6)). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), ','(mergesortcE(X4, X6), mergesortE(X5, X7))). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), ','(mergesortcE(X4, X6), ','(mergesortcE(X5, X7), mergeD(X6, X7, X8)))). mergesortE(.(X1, .(X2, X3)), X4) :- pC(X1, X2, X3, X5, X6, X7, X8, X4). mergeD(.(X1, X2), .(X1, X3), .(X1, X4)) :- mergeD(.(X1, X2), X3, X4). mergesortF(X1, .(X2, X3), X4) :- pC(X1, X2, X3, X5, X6, X7, X8, X4). mergeH(X1, X2, .(X1, X3), .(X1, X4)) :- mergeH(X1, X2, X3, X4). mergesortI(.(X1, .(X2, X3)), []) :- splitB(X2, X3, X4, X5). mergesortI(.(X1, .(X2, X3)), []) :- ','(splitcB(X2, X3, X4, X5), mergesortF(X1, X5, X6)). mergesortI(.(X1, .(X2, X3)), []) :- ','(splitcB(X2, X3, X4, X5), ','(mergesortcF(X1, X5, X6), mergesortE(X4, X7))). mergesortI(.(X1, .(X2, X3)), []) :- ','(splitcB(X2, X3, X4, X5), ','(mergesortcF(X1, X5, X6), ','(mergesortcE(X4, X7), mergeG(X6, X7)))). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- splitB(X2, X3, X5, X6). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- ','(splitcB(X2, X3, X5, X6), mergesortF(X1, X6, X7)). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- ','(splitcB(X2, X3, X5, X6), ','(mergesortcF(X1, X6, X7), mergesortE(X5, X8))). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- ','(splitcB(X2, X3, X5, X6), ','(mergesortcF(X1, X6, .(X4, X7)), ','(mergesortcE(X5, .(X4, X8)), mergeG(.(X4, X7), X8)))). mergesortI(.(X1, .(X2, X3)), X4) :- splitB(X2, X3, X5, X6). mergesortI(.(X1, .(X2, X3)), X4) :- ','(splitcB(X2, X3, X5, X6), mergesortF(X1, X6, X7)). mergesortI(.(X1, .(X2, X3)), X4) :- ','(splitcB(X2, X3, X5, X6), ','(mergesortcF(X1, X6, X7), mergesortE(X5, X8))). mergesortI(.(X1, .(X2, X3)), .(X4, .(X4, X5))) :- ','(splitcB(X2, X3, X6, X7), ','(mergesortcF(X1, X7, .(X4, X8)), ','(mergesortcE(X6, .(X4, .(X4, X9))), mergeH(X4, X8, X9, X5)))). Clauses: splitcA([], [], []). splitcA(.(X1, X2), .(X1, X3), X4) :- splitcA(X2, X4, X3). splitcB(X1, X2, .(X1, X3), X4) :- splitcA(X2, X4, X3). qcC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), ','(mergesortcE(X4, X6), ','(mergesortcE(X5, X7), mergecD(X6, X7, X8)))). mergesortcE([], []). mergesortcE(.(X1, []), .(X1, [])). mergesortcE(.(X1, .(X2, X3)), X4) :- qcC(X1, X2, X3, X5, X6, X7, X8, X4). mergecD([], X1, X1). mergecD(X1, [], X1). mergecD(.(X1, X2), .(X1, X3), .(X1, X4)) :- mergecD(.(X1, X2), X3, X4). mergesortcF(X1, [], .(X1, [])). mergesortcF(X1, .(X2, X3), X4) :- qcC(X1, X2, X3, X5, X6, X7, X8, X4). mergecG([], []). mergecG([], []). mergecH(X1, X2, [], .(X1, X2)). mergecH(X1, X2, .(X1, X3), .(X1, X4)) :- mergecH(X1, X2, X3, X4). Afs: mergesortI(x1, x2) = mergesortI(x2) ---------------------------------------- (134) UndefinedPredicateInTriplesTransformerProof (SOUND) Deleted triples and predicates having undefined goals [DT09]. ---------------------------------------- (135) Obligation: Triples: splitA(.(X1, X2), .(X1, X3), X4) :- splitA(X2, X4, X3). splitB(X1, X2, .(X1, X3), X4) :- splitA(X2, X4, X3). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- splitB(X1, .(X2, X3), X4, X5). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), mergesortE(X4, X6)). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), ','(mergesortcE(X4, X6), mergesortE(X5, X7))). pC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), ','(mergesortcE(X4, X6), ','(mergesortcE(X5, X7), mergeD(X6, X7, X8)))). mergesortE(.(X1, .(X2, X3)), X4) :- pC(X1, X2, X3, X5, X6, X7, X8, X4). mergeD(.(X1, X2), .(X1, X3), .(X1, X4)) :- mergeD(.(X1, X2), X3, X4). mergesortF(X1, .(X2, X3), X4) :- pC(X1, X2, X3, X5, X6, X7, X8, X4). mergeH(X1, X2, .(X1, X3), .(X1, X4)) :- mergeH(X1, X2, X3, X4). mergesortI(.(X1, .(X2, X3)), []) :- splitB(X2, X3, X4, X5). mergesortI(.(X1, .(X2, X3)), []) :- ','(splitcB(X2, X3, X4, X5), mergesortF(X1, X5, X6)). mergesortI(.(X1, .(X2, X3)), []) :- ','(splitcB(X2, X3, X4, X5), ','(mergesortcF(X1, X5, X6), mergesortE(X4, X7))). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- splitB(X2, X3, X5, X6). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- ','(splitcB(X2, X3, X5, X6), mergesortF(X1, X6, X7)). mergesortI(.(X1, .(X2, X3)), .(X4, [])) :- ','(splitcB(X2, X3, X5, X6), ','(mergesortcF(X1, X6, X7), mergesortE(X5, X8))). mergesortI(.(X1, .(X2, X3)), X4) :- splitB(X2, X3, X5, X6). mergesortI(.(X1, .(X2, X3)), X4) :- ','(splitcB(X2, X3, X5, X6), mergesortF(X1, X6, X7)). mergesortI(.(X1, .(X2, X3)), X4) :- ','(splitcB(X2, X3, X5, X6), ','(mergesortcF(X1, X6, X7), mergesortE(X5, X8))). mergesortI(.(X1, .(X2, X3)), .(X4, .(X4, X5))) :- ','(splitcB(X2, X3, X6, X7), ','(mergesortcF(X1, X7, .(X4, X8)), ','(mergesortcE(X6, .(X4, .(X4, X9))), mergeH(X4, X8, X9, X5)))). Clauses: splitcA([], [], []). splitcA(.(X1, X2), .(X1, X3), X4) :- splitcA(X2, X4, X3). splitcB(X1, X2, .(X1, X3), X4) :- splitcA(X2, X4, X3). qcC(X1, X2, X3, X4, X5, X6, X7, X8) :- ','(splitcB(X1, .(X2, X3), X4, X5), ','(mergesortcE(X4, X6), ','(mergesortcE(X5, X7), mergecD(X6, X7, X8)))). mergesortcE([], []). mergesortcE(.(X1, []), .(X1, [])). mergesortcE(.(X1, .(X2, X3)), X4) :- qcC(X1, X2, X3, X5, X6, X7, X8, X4). mergecD([], X1, X1). mergecD(X1, [], X1). mergecD(.(X1, X2), .(X1, X3), .(X1, X4)) :- mergecD(.(X1, X2), X3, X4). mergesortcF(X1, [], .(X1, [])). mergesortcF(X1, .(X2, X3), X4) :- qcC(X1, X2, X3, X5, X6, X7, X8, X4). mergecG([], []). mergecG([], []). mergecH(X1, X2, [], .(X1, X2)). mergecH(X1, X2, .(X1, X3), .(X1, X4)) :- mergecH(X1, X2, X3, X4). Afs: mergesortI(x1, x2) = mergesortI(x2) ---------------------------------------- (136) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: mergesortI_in_2: (f,b) splitB_in_4: (f,f,f,f) (f,b,f,f) splitA_in_3: (f,f,f) (b,f,f) splitcB_in_4: (f,f,f,f) (f,b,f,f) splitcA_in_3: (f,f,f) (b,f,f) mergesortF_in_3: (f,b,f) pC_in_8: (f,f,b,f,f,f,f,f) mergesortE_in_2: (b,f) mergesortcE_in_2: (b,f) qcC_in_8: (f,f,b,f,f,f,f,f) mergecD_in_3: (b,b,f) mergeD_in_3: (b,b,f) mergesortcF_in_3: (f,b,f) mergeH_in_4: (f,b,b,b) Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: MERGESORTI_IN_AG(.(X1, .(X2, X3)), []) -> U14_AG(X1, X2, X3, splitB_in_aaaa(X2, X3, X4, X5)) MERGESORTI_IN_AG(.(X1, .(X2, X3)), []) -> SPLITB_IN_AAAA(X2, X3, X4, X5) SPLITB_IN_AAAA(X1, X2, .(X1, X3), X4) -> U2_AAAA(X1, X2, X3, X4, splitA_in_aaa(X2, X4, X3)) SPLITB_IN_AAAA(X1, X2, .(X1, X3), X4) -> SPLITA_IN_AAA(X2, X4, X3) SPLITA_IN_AAA(.(X1, X2), .(X1, X3), X4) -> U1_AAA(X1, X2, X3, X4, splitA_in_aaa(X2, X4, X3)) SPLITA_IN_AAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_AAA(X2, X4, X3) MERGESORTI_IN_AG(.(X1, .(X2, X3)), []) -> U15_AG(X1, X2, X3, splitcB_in_aaaa(X2, X3, X4, X5)) U15_AG(X1, X2, X3, splitcB_out_aaaa(X2, X3, X4, X5)) -> U16_AG(X1, X2, X3, mergesortF_in_aga(X1, X5, X6)) U15_AG(X1, X2, X3, splitcB_out_aaaa(X2, X3, X4, X5)) -> MERGESORTF_IN_AGA(X1, X5, X6) MERGESORTF_IN_AGA(X1, .(X2, X3), X4) -> U12_AGA(X1, X2, X3, X4, pC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) MERGESORTF_IN_AGA(X1, .(X2, X3), X4) -> PC_IN_AAGAAAAA(X1, X2, X3, X5, X6, X7, X8, X4) PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> U3_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitB_in_agaa(X1, .(X2, X3), X4, X5)) PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> SPLITB_IN_AGAA(X1, .(X2, X3), X4, X5) SPLITB_IN_AGAA(X1, X2, .(X1, X3), X4) -> U2_AGAA(X1, X2, X3, X4, splitA_in_gaa(X2, X4, X3)) SPLITB_IN_AGAA(X1, X2, .(X1, X3), X4) -> SPLITA_IN_GAA(X2, X4, X3) SPLITA_IN_GAA(.(X1, X2), .(X1, X3), X4) -> U1_GAA(X1, X2, X3, X4, splitA_in_gaa(X2, X4, X3)) SPLITA_IN_GAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_GAA(X2, X4, X3) PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U5_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortE_in_ga(X4, X6)) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> MERGESORTE_IN_GA(X4, X6) MERGESORTE_IN_GA(.(X1, .(X2, X3)), X4) -> U10_GA(X1, X2, X3, X4, pC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) MERGESORTE_IN_GA(.(X1, .(X2, X3)), X4) -> PC_IN_AAGAAAAA(X1, X2, X3, X5, X6, X7, X8, X4) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U7_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortE_in_ga(X5, X7)) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5, X7) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U8_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U8_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U9_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergeD_in_gga(X6, X7, X8)) U8_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> MERGED_IN_GGA(X6, X7, X8) MERGED_IN_GGA(.(X1, X2), .(X1, X3), .(X1, X4)) -> U11_GGA(X1, X2, X3, X4, mergeD_in_gga(.(X1, X2), X3, X4)) MERGED_IN_GGA(.(X1, X2), .(X1, X3), .(X1, X4)) -> MERGED_IN_GGA(.(X1, X2), X3, X4) U15_AG(X1, X2, X3, splitcB_out_aaaa(X2, X3, X4, X5)) -> U17_AG(X1, X2, X3, X4, mergesortcF_in_aga(X1, X5, X6)) U17_AG(X1, X2, X3, X4, mergesortcF_out_aga(X1, X5, X6)) -> U18_AG(X1, X2, X3, mergesortE_in_ga(X4, X7)) U17_AG(X1, X2, X3, X4, mergesortcF_out_aga(X1, X5, X6)) -> MERGESORTE_IN_GA(X4, X7) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, [])) -> U19_AG(X1, X2, X3, X4, splitB_in_aaaa(X2, X3, X5, X6)) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, [])) -> SPLITB_IN_AAAA(X2, X3, X5, X6) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, [])) -> U20_AG(X1, X2, X3, X4, splitcB_in_aaaa(X2, X3, X5, X6)) U20_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U21_AG(X1, X2, X3, X4, mergesortF_in_aga(X1, X6, X7)) U20_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> MERGESORTF_IN_AGA(X1, X6, X7) U20_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U22_AG(X1, X2, X3, X4, X5, mergesortcF_in_aga(X1, X6, X7)) U22_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> U23_AG(X1, X2, X3, X4, mergesortE_in_ga(X5, X8)) U22_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> MERGESORTE_IN_GA(X5, X8) MERGESORTI_IN_AG(.(X1, .(X2, X3)), X4) -> U24_AG(X1, X2, X3, X4, splitB_in_aaaa(X2, X3, X5, X6)) MERGESORTI_IN_AG(.(X1, .(X2, X3)), X4) -> SPLITB_IN_AAAA(X2, X3, X5, X6) MERGESORTI_IN_AG(.(X1, .(X2, X3)), X4) -> U25_AG(X1, X2, X3, X4, splitcB_in_aaaa(X2, X3, X5, X6)) U25_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U26_AG(X1, X2, X3, X4, mergesortF_in_aga(X1, X6, X7)) U25_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> MERGESORTF_IN_AGA(X1, X6, X7) U25_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U27_AG(X1, X2, X3, X4, X5, mergesortcF_in_aga(X1, X6, X7)) U27_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> U28_AG(X1, X2, X3, X4, mergesortE_in_ga(X5, X8)) U27_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> MERGESORTE_IN_GA(X5, X8) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, .(X4, X5))) -> U29_AG(X1, X2, X3, X4, X5, splitcB_in_aaaa(X2, X3, X6, X7)) U29_AG(X1, X2, X3, X4, X5, splitcB_out_aaaa(X2, X3, X6, X7)) -> U30_AG(X1, X2, X3, X4, X5, X6, mergesortcF_in_aga(X1, X7, .(X4, X8))) U30_AG(X1, X2, X3, X4, X5, X6, mergesortcF_out_aga(X1, X7, .(X4, X8))) -> U31_AG(X1, X2, X3, X4, X5, X8, mergesortcE_in_ga(X6, .(X4, .(X4, X9)))) U31_AG(X1, X2, X3, X4, X5, X8, mergesortcE_out_ga(X6, .(X4, .(X4, X9)))) -> U32_AG(X1, X2, X3, X4, X5, mergeH_in_aggg(X4, X8, X9, X5)) U31_AG(X1, X2, X3, X4, X5, X8, mergesortcE_out_ga(X6, .(X4, .(X4, X9)))) -> MERGEH_IN_AGGG(X4, X8, X9, X5) MERGEH_IN_AGGG(X1, X2, .(X1, X3), .(X1, X4)) -> U13_AGGG(X1, X2, X3, X4, mergeH_in_aggg(X1, X2, X3, X4)) MERGEH_IN_AGGG(X1, X2, .(X1, X3), .(X1, X4)) -> MERGEH_IN_AGGG(X1, X2, X3, X4) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] splitB_in_aaaa(x1, x2, x3, x4) = splitB_in_aaaa splitA_in_aaa(x1, x2, x3) = splitA_in_aaa .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) mergesortF_in_aga(x1, x2, x3) = mergesortF_in_aga(x2) pC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = pC_in_aagaaaaa(x3) splitB_in_agaa(x1, x2, x3, x4) = splitB_in_agaa(x2) splitA_in_gaa(x1, x2, x3) = splitA_in_gaa(x1) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortE_in_ga(x1, x2) = mergesortE_in_ga(x1) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergeD_in_gga(x1, x2, x3) = mergeD_in_gga(x1, x2) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) mergeH_in_aggg(x1, x2, x3, x4) = mergeH_in_aggg(x2, x3, x4) MERGESORTI_IN_AG(x1, x2) = MERGESORTI_IN_AG(x2) U14_AG(x1, x2, x3, x4) = U14_AG(x4) SPLITB_IN_AAAA(x1, x2, x3, x4) = SPLITB_IN_AAAA U2_AAAA(x1, x2, x3, x4, x5) = U2_AAAA(x5) SPLITA_IN_AAA(x1, x2, x3) = SPLITA_IN_AAA U1_AAA(x1, x2, x3, x4, x5) = U1_AAA(x5) U15_AG(x1, x2, x3, x4) = U15_AG(x4) U16_AG(x1, x2, x3, x4) = U16_AG(x3, x4) MERGESORTF_IN_AGA(x1, x2, x3) = MERGESORTF_IN_AGA(x2) U12_AGA(x1, x2, x3, x4, x5) = U12_AGA(x3, x5) PC_IN_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8) = PC_IN_AAGAAAAA(x3) U3_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U3_AAGAAAAA(x3, x9) SPLITB_IN_AGAA(x1, x2, x3, x4) = SPLITB_IN_AGAA(x2) U2_AGAA(x1, x2, x3, x4, x5) = U2_AGAA(x2, x5) SPLITA_IN_GAA(x1, x2, x3) = SPLITA_IN_GAA(x1) U1_GAA(x1, x2, x3, x4, x5) = U1_GAA(x2, x5) U4_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U4_AAGAAAAA(x3, x9) U5_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U5_AAGAAAAA(x3, x4, x5, x9) MERGESORTE_IN_GA(x1, x2) = MERGESORTE_IN_GA(x1) U10_GA(x1, x2, x3, x4, x5) = U10_GA(x3, x5) U6_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U6_AAGAAAAA(x3, x4, x5, x9) U7_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U7_AAGAAAAA(x3, x4, x5, x9) U8_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U8_AAGAAAAA(x3, x4, x5, x6, x9) U9_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U9_AAGAAAAA(x3, x4, x5, x9) MERGED_IN_GGA(x1, x2, x3) = MERGED_IN_GGA(x1, x2) U11_GGA(x1, x2, x3, x4, x5) = U11_GGA(x2, x3, x5) U17_AG(x1, x2, x3, x4, x5) = U17_AG(x3, x4, x5) U18_AG(x1, x2, x3, x4) = U18_AG(x3, x4) U19_AG(x1, x2, x3, x4, x5) = U19_AG(x5) U20_AG(x1, x2, x3, x4, x5) = U20_AG(x5) U21_AG(x1, x2, x3, x4, x5) = U21_AG(x3, x5) U22_AG(x1, x2, x3, x4, x5, x6) = U22_AG(x3, x5, x6) U23_AG(x1, x2, x3, x4, x5) = U23_AG(x3, x5) U24_AG(x1, x2, x3, x4, x5) = U24_AG(x4, x5) U25_AG(x1, x2, x3, x4, x5) = U25_AG(x4, x5) U26_AG(x1, x2, x3, x4, x5) = U26_AG(x3, x4, x5) U27_AG(x1, x2, x3, x4, x5, x6) = U27_AG(x3, x4, x5, x6) U28_AG(x1, x2, x3, x4, x5) = U28_AG(x3, x4, x5) U29_AG(x1, x2, x3, x4, x5, x6) = U29_AG(x5, x6) U30_AG(x1, x2, x3, x4, x5, x6, x7) = U30_AG(x3, x5, x6, x7) U31_AG(x1, x2, x3, x4, x5, x6, x7) = U31_AG(x3, x5, x6, x7) U32_AG(x1, x2, x3, x4, x5, x6) = U32_AG(x3, x5, x6) MERGEH_IN_AGGG(x1, x2, x3, x4) = MERGEH_IN_AGGG(x2, x3, x4) U13_AGGG(x1, x2, x3, x4, x5) = U13_AGGG(x2, x3, x4, x5) We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (137) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGESORTI_IN_AG(.(X1, .(X2, X3)), []) -> U14_AG(X1, X2, X3, splitB_in_aaaa(X2, X3, X4, X5)) MERGESORTI_IN_AG(.(X1, .(X2, X3)), []) -> SPLITB_IN_AAAA(X2, X3, X4, X5) SPLITB_IN_AAAA(X1, X2, .(X1, X3), X4) -> U2_AAAA(X1, X2, X3, X4, splitA_in_aaa(X2, X4, X3)) SPLITB_IN_AAAA(X1, X2, .(X1, X3), X4) -> SPLITA_IN_AAA(X2, X4, X3) SPLITA_IN_AAA(.(X1, X2), .(X1, X3), X4) -> U1_AAA(X1, X2, X3, X4, splitA_in_aaa(X2, X4, X3)) SPLITA_IN_AAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_AAA(X2, X4, X3) MERGESORTI_IN_AG(.(X1, .(X2, X3)), []) -> U15_AG(X1, X2, X3, splitcB_in_aaaa(X2, X3, X4, X5)) U15_AG(X1, X2, X3, splitcB_out_aaaa(X2, X3, X4, X5)) -> U16_AG(X1, X2, X3, mergesortF_in_aga(X1, X5, X6)) U15_AG(X1, X2, X3, splitcB_out_aaaa(X2, X3, X4, X5)) -> MERGESORTF_IN_AGA(X1, X5, X6) MERGESORTF_IN_AGA(X1, .(X2, X3), X4) -> U12_AGA(X1, X2, X3, X4, pC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) MERGESORTF_IN_AGA(X1, .(X2, X3), X4) -> PC_IN_AAGAAAAA(X1, X2, X3, X5, X6, X7, X8, X4) PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> U3_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitB_in_agaa(X1, .(X2, X3), X4, X5)) PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> SPLITB_IN_AGAA(X1, .(X2, X3), X4, X5) SPLITB_IN_AGAA(X1, X2, .(X1, X3), X4) -> U2_AGAA(X1, X2, X3, X4, splitA_in_gaa(X2, X4, X3)) SPLITB_IN_AGAA(X1, X2, .(X1, X3), X4) -> SPLITA_IN_GAA(X2, X4, X3) SPLITA_IN_GAA(.(X1, X2), .(X1, X3), X4) -> U1_GAA(X1, X2, X3, X4, splitA_in_gaa(X2, X4, X3)) SPLITA_IN_GAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_GAA(X2, X4, X3) PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U5_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortE_in_ga(X4, X6)) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> MERGESORTE_IN_GA(X4, X6) MERGESORTE_IN_GA(.(X1, .(X2, X3)), X4) -> U10_GA(X1, X2, X3, X4, pC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) MERGESORTE_IN_GA(.(X1, .(X2, X3)), X4) -> PC_IN_AAGAAAAA(X1, X2, X3, X5, X6, X7, X8, X4) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U7_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortE_in_ga(X5, X7)) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5, X7) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U8_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U8_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U9_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergeD_in_gga(X6, X7, X8)) U8_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> MERGED_IN_GGA(X6, X7, X8) MERGED_IN_GGA(.(X1, X2), .(X1, X3), .(X1, X4)) -> U11_GGA(X1, X2, X3, X4, mergeD_in_gga(.(X1, X2), X3, X4)) MERGED_IN_GGA(.(X1, X2), .(X1, X3), .(X1, X4)) -> MERGED_IN_GGA(.(X1, X2), X3, X4) U15_AG(X1, X2, X3, splitcB_out_aaaa(X2, X3, X4, X5)) -> U17_AG(X1, X2, X3, X4, mergesortcF_in_aga(X1, X5, X6)) U17_AG(X1, X2, X3, X4, mergesortcF_out_aga(X1, X5, X6)) -> U18_AG(X1, X2, X3, mergesortE_in_ga(X4, X7)) U17_AG(X1, X2, X3, X4, mergesortcF_out_aga(X1, X5, X6)) -> MERGESORTE_IN_GA(X4, X7) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, [])) -> U19_AG(X1, X2, X3, X4, splitB_in_aaaa(X2, X3, X5, X6)) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, [])) -> SPLITB_IN_AAAA(X2, X3, X5, X6) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, [])) -> U20_AG(X1, X2, X3, X4, splitcB_in_aaaa(X2, X3, X5, X6)) U20_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U21_AG(X1, X2, X3, X4, mergesortF_in_aga(X1, X6, X7)) U20_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> MERGESORTF_IN_AGA(X1, X6, X7) U20_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U22_AG(X1, X2, X3, X4, X5, mergesortcF_in_aga(X1, X6, X7)) U22_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> U23_AG(X1, X2, X3, X4, mergesortE_in_ga(X5, X8)) U22_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> MERGESORTE_IN_GA(X5, X8) MERGESORTI_IN_AG(.(X1, .(X2, X3)), X4) -> U24_AG(X1, X2, X3, X4, splitB_in_aaaa(X2, X3, X5, X6)) MERGESORTI_IN_AG(.(X1, .(X2, X3)), X4) -> SPLITB_IN_AAAA(X2, X3, X5, X6) MERGESORTI_IN_AG(.(X1, .(X2, X3)), X4) -> U25_AG(X1, X2, X3, X4, splitcB_in_aaaa(X2, X3, X5, X6)) U25_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U26_AG(X1, X2, X3, X4, mergesortF_in_aga(X1, X6, X7)) U25_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> MERGESORTF_IN_AGA(X1, X6, X7) U25_AG(X1, X2, X3, X4, splitcB_out_aaaa(X2, X3, X5, X6)) -> U27_AG(X1, X2, X3, X4, X5, mergesortcF_in_aga(X1, X6, X7)) U27_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> U28_AG(X1, X2, X3, X4, mergesortE_in_ga(X5, X8)) U27_AG(X1, X2, X3, X4, X5, mergesortcF_out_aga(X1, X6, X7)) -> MERGESORTE_IN_GA(X5, X8) MERGESORTI_IN_AG(.(X1, .(X2, X3)), .(X4, .(X4, X5))) -> U29_AG(X1, X2, X3, X4, X5, splitcB_in_aaaa(X2, X3, X6, X7)) U29_AG(X1, X2, X3, X4, X5, splitcB_out_aaaa(X2, X3, X6, X7)) -> U30_AG(X1, X2, X3, X4, X5, X6, mergesortcF_in_aga(X1, X7, .(X4, X8))) U30_AG(X1, X2, X3, X4, X5, X6, mergesortcF_out_aga(X1, X7, .(X4, X8))) -> U31_AG(X1, X2, X3, X4, X5, X8, mergesortcE_in_ga(X6, .(X4, .(X4, X9)))) U31_AG(X1, X2, X3, X4, X5, X8, mergesortcE_out_ga(X6, .(X4, .(X4, X9)))) -> U32_AG(X1, X2, X3, X4, X5, mergeH_in_aggg(X4, X8, X9, X5)) U31_AG(X1, X2, X3, X4, X5, X8, mergesortcE_out_ga(X6, .(X4, .(X4, X9)))) -> MERGEH_IN_AGGG(X4, X8, X9, X5) MERGEH_IN_AGGG(X1, X2, .(X1, X3), .(X1, X4)) -> U13_AGGG(X1, X2, X3, X4, mergeH_in_aggg(X1, X2, X3, X4)) MERGEH_IN_AGGG(X1, X2, .(X1, X3), .(X1, X4)) -> MERGEH_IN_AGGG(X1, X2, X3, X4) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] splitB_in_aaaa(x1, x2, x3, x4) = splitB_in_aaaa splitA_in_aaa(x1, x2, x3) = splitA_in_aaa .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) mergesortF_in_aga(x1, x2, x3) = mergesortF_in_aga(x2) pC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = pC_in_aagaaaaa(x3) splitB_in_agaa(x1, x2, x3, x4) = splitB_in_agaa(x2) splitA_in_gaa(x1, x2, x3) = splitA_in_gaa(x1) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortE_in_ga(x1, x2) = mergesortE_in_ga(x1) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergeD_in_gga(x1, x2, x3) = mergeD_in_gga(x1, x2) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) mergeH_in_aggg(x1, x2, x3, x4) = mergeH_in_aggg(x2, x3, x4) MERGESORTI_IN_AG(x1, x2) = MERGESORTI_IN_AG(x2) U14_AG(x1, x2, x3, x4) = U14_AG(x4) SPLITB_IN_AAAA(x1, x2, x3, x4) = SPLITB_IN_AAAA U2_AAAA(x1, x2, x3, x4, x5) = U2_AAAA(x5) SPLITA_IN_AAA(x1, x2, x3) = SPLITA_IN_AAA U1_AAA(x1, x2, x3, x4, x5) = U1_AAA(x5) U15_AG(x1, x2, x3, x4) = U15_AG(x4) U16_AG(x1, x2, x3, x4) = U16_AG(x3, x4) MERGESORTF_IN_AGA(x1, x2, x3) = MERGESORTF_IN_AGA(x2) U12_AGA(x1, x2, x3, x4, x5) = U12_AGA(x3, x5) PC_IN_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8) = PC_IN_AAGAAAAA(x3) U3_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U3_AAGAAAAA(x3, x9) SPLITB_IN_AGAA(x1, x2, x3, x4) = SPLITB_IN_AGAA(x2) U2_AGAA(x1, x2, x3, x4, x5) = U2_AGAA(x2, x5) SPLITA_IN_GAA(x1, x2, x3) = SPLITA_IN_GAA(x1) U1_GAA(x1, x2, x3, x4, x5) = U1_GAA(x2, x5) U4_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U4_AAGAAAAA(x3, x9) U5_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U5_AAGAAAAA(x3, x4, x5, x9) MERGESORTE_IN_GA(x1, x2) = MERGESORTE_IN_GA(x1) U10_GA(x1, x2, x3, x4, x5) = U10_GA(x3, x5) U6_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U6_AAGAAAAA(x3, x4, x5, x9) U7_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U7_AAGAAAAA(x3, x4, x5, x9) U8_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U8_AAGAAAAA(x3, x4, x5, x6, x9) U9_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U9_AAGAAAAA(x3, x4, x5, x9) MERGED_IN_GGA(x1, x2, x3) = MERGED_IN_GGA(x1, x2) U11_GGA(x1, x2, x3, x4, x5) = U11_GGA(x2, x3, x5) U17_AG(x1, x2, x3, x4, x5) = U17_AG(x3, x4, x5) U18_AG(x1, x2, x3, x4) = U18_AG(x3, x4) U19_AG(x1, x2, x3, x4, x5) = U19_AG(x5) U20_AG(x1, x2, x3, x4, x5) = U20_AG(x5) U21_AG(x1, x2, x3, x4, x5) = U21_AG(x3, x5) U22_AG(x1, x2, x3, x4, x5, x6) = U22_AG(x3, x5, x6) U23_AG(x1, x2, x3, x4, x5) = U23_AG(x3, x5) U24_AG(x1, x2, x3, x4, x5) = U24_AG(x4, x5) U25_AG(x1, x2, x3, x4, x5) = U25_AG(x4, x5) U26_AG(x1, x2, x3, x4, x5) = U26_AG(x3, x4, x5) U27_AG(x1, x2, x3, x4, x5, x6) = U27_AG(x3, x4, x5, x6) U28_AG(x1, x2, x3, x4, x5) = U28_AG(x3, x4, x5) U29_AG(x1, x2, x3, x4, x5, x6) = U29_AG(x5, x6) U30_AG(x1, x2, x3, x4, x5, x6, x7) = U30_AG(x3, x5, x6, x7) U31_AG(x1, x2, x3, x4, x5, x6, x7) = U31_AG(x3, x5, x6, x7) U32_AG(x1, x2, x3, x4, x5, x6) = U32_AG(x3, x5, x6) MERGEH_IN_AGGG(x1, x2, x3, x4) = MERGEH_IN_AGGG(x2, x3, x4) U13_AGGG(x1, x2, x3, x4, x5) = U13_AGGG(x2, x3, x4, x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (138) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 47 less nodes. ---------------------------------------- (139) Complex Obligation (AND) ---------------------------------------- (140) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGEH_IN_AGGG(X1, X2, .(X1, X3), .(X1, X4)) -> MERGEH_IN_AGGG(X1, X2, X3, X4) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) MERGEH_IN_AGGG(x1, x2, x3, x4) = MERGEH_IN_AGGG(x2, x3, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (141) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (142) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGEH_IN_AGGG(X1, X2, .(X1, X3), .(X1, X4)) -> MERGEH_IN_AGGG(X1, X2, X3, X4) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) MERGEH_IN_AGGG(x1, x2, x3, x4) = MERGEH_IN_AGGG(x2, x3, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (143) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (144) Obligation: Q DP problem: The TRS P consists of the following rules: MERGEH_IN_AGGG(X2, .(X3), .(X4)) -> MERGEH_IN_AGGG(X2, X3, X4) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (145) 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: *MERGEH_IN_AGGG(X2, .(X3), .(X4)) -> MERGEH_IN_AGGG(X2, X3, X4) The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3 ---------------------------------------- (146) YES ---------------------------------------- (147) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGED_IN_GGA(.(X1, X2), .(X1, X3), .(X1, X4)) -> MERGED_IN_GGA(.(X1, X2), X3, X4) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) MERGED_IN_GGA(x1, x2, x3) = MERGED_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (148) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (149) Obligation: Pi DP problem: The TRS P consists of the following rules: MERGED_IN_GGA(.(X1, X2), .(X1, X3), .(X1, X4)) -> MERGED_IN_GGA(.(X1, X2), X3, X4) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) MERGED_IN_GGA(x1, x2, x3) = MERGED_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (150) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (151) Obligation: Q DP problem: The TRS P consists of the following rules: MERGED_IN_GGA(.(X2), .(X3)) -> MERGED_IN_GGA(.(X2), X3) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (152) 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: *MERGED_IN_GGA(.(X2), .(X3)) -> MERGED_IN_GGA(.(X2), X3) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (153) YES ---------------------------------------- (154) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLITA_IN_GAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_GAA(X2, X4, X3) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) SPLITA_IN_GAA(x1, x2, x3) = SPLITA_IN_GAA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (155) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (156) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLITA_IN_GAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_GAA(X2, X4, X3) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) SPLITA_IN_GAA(x1, x2, x3) = SPLITA_IN_GAA(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (157) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (158) Obligation: Q DP problem: The TRS P consists of the following rules: SPLITA_IN_GAA(.(X2)) -> SPLITA_IN_GAA(X2) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (159) 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: *SPLITA_IN_GAA(.(X2)) -> SPLITA_IN_GAA(X2) The graph contains the following edges 1 > 1 ---------------------------------------- (160) YES ---------------------------------------- (161) Obligation: Pi DP problem: The TRS P consists of the following rules: PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> MERGESORTE_IN_GA(X4, X6) MERGESORTE_IN_GA(.(X1, .(X2, X3)), X4) -> PC_IN_AAGAAAAA(X1, X2, X3, X5, X6, X7, X8, X4) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5, X7) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) PC_IN_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8) = PC_IN_AAGAAAAA(x3) U4_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U4_AAGAAAAA(x3, x9) MERGESORTE_IN_GA(x1, x2) = MERGESORTE_IN_GA(x1) U6_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U6_AAGAAAAA(x3, x4, x5, x9) We have to consider all (P,R,Pi)-chains ---------------------------------------- (162) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (163) Obligation: Pi DP problem: The TRS P consists of the following rules: PC_IN_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8) -> U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> MERGESORTE_IN_GA(X4, X6) MERGESORTE_IN_GA(.(X1, .(X2, X3)), X4) -> PC_IN_AAGAAAAA(X1, X2, X3, X5, X6, X7, X8, X4) U4_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U6_AAGAAAAA(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5, X7) The TRS R consists of the following rules: splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) PC_IN_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8) = PC_IN_AAGAAAAA(x3) U4_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U4_AAGAAAAA(x3, x9) MERGESORTE_IN_GA(x1, x2) = MERGESORTE_IN_GA(x1) U6_AAGAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U6_AAGAAAAA(x3, x4, x5, x9) We have to consider all (P,R,Pi)-chains ---------------------------------------- (164) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (165) Obligation: Q DP problem: The TRS P consists of the following rules: PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, splitcB_in_agaa(.(X3))) U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> MERGESORTE_IN_GA(X4) MERGESORTE_IN_GA(.(.(X3))) -> PC_IN_AAGAAAAA(X3) U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U6_AAGAAAAA(X3, X4, X5, mergesortcE_in_ga(X4)) U6_AAGAAAAA(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5) The TRS R consists of the following rules: splitcB_in_agaa(X2) -> U35_agaa(X2, splitcA_in_gaa(X2)) mergesortcE_in_ga([]) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.([])) -> mergesortcE_out_ga(.([]), .([])) mergesortcE_in_ga(.(.(X3))) -> U40_ga(X3, qcC_in_aagaaaaa(X3)) U35_agaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X2, .(X3), X4) U40_ga(X3, qcC_out_aagaaaaa(X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(.(X3)), X4) splitcA_in_gaa([]) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X2)) -> U34_gaa(X2, splitcA_in_gaa(X2)) qcC_in_aagaaaaa(X3) -> U36_aagaaaaa(X3, splitcB_in_agaa(.(X3))) U34_gaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X2), .(X3), X4) U36_aagaaaaa(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U37_aagaaaaa(X3, X4, X5, mergesortcE_in_ga(X4)) U37_aagaaaaa(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_in_ga(X5)) U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_in_gga(X6, X7)) U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X3, X4, X5, X6, X7, X8) mergecD_in_gga([], X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, []) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X2), .(X3)) -> U41_gga(X2, X3, mergecD_in_gga(.(X2), X3)) U41_gga(X2, X3, mergecD_out_gga(.(X2), X3, X4)) -> mergecD_out_gga(.(X2), .(X3), .(X4)) The set Q consists of the following terms: splitcB_in_agaa(x0) mergesortcE_in_ga(x0) U35_agaa(x0, x1) U40_ga(x0, x1) splitcA_in_gaa(x0) qcC_in_aagaaaaa(x0) U34_gaa(x0, x1) U36_aagaaaaa(x0, x1) U37_aagaaaaa(x0, x1, x2, x3) U38_aagaaaaa(x0, x1, x2, x3, x4) U39_aagaaaaa(x0, x1, x2, x3, x4, x5) mergecD_in_gga(x0, x1) U41_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (166) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, splitcB_in_agaa(.(X3))) at position [1] we obtained the following new rules [LPAR04]: (PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), splitcA_in_gaa(.(X3)))),PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), splitcA_in_gaa(.(X3))))) ---------------------------------------- (167) Obligation: Q DP problem: The TRS P consists of the following rules: U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> MERGESORTE_IN_GA(X4) MERGESORTE_IN_GA(.(.(X3))) -> PC_IN_AAGAAAAA(X3) U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U6_AAGAAAAA(X3, X4, X5, mergesortcE_in_ga(X4)) U6_AAGAAAAA(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5) PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), splitcA_in_gaa(.(X3)))) The TRS R consists of the following rules: splitcB_in_agaa(X2) -> U35_agaa(X2, splitcA_in_gaa(X2)) mergesortcE_in_ga([]) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.([])) -> mergesortcE_out_ga(.([]), .([])) mergesortcE_in_ga(.(.(X3))) -> U40_ga(X3, qcC_in_aagaaaaa(X3)) U35_agaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X2, .(X3), X4) U40_ga(X3, qcC_out_aagaaaaa(X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(.(X3)), X4) splitcA_in_gaa([]) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X2)) -> U34_gaa(X2, splitcA_in_gaa(X2)) qcC_in_aagaaaaa(X3) -> U36_aagaaaaa(X3, splitcB_in_agaa(.(X3))) U34_gaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X2), .(X3), X4) U36_aagaaaaa(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U37_aagaaaaa(X3, X4, X5, mergesortcE_in_ga(X4)) U37_aagaaaaa(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_in_ga(X5)) U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_in_gga(X6, X7)) U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X3, X4, X5, X6, X7, X8) mergecD_in_gga([], X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, []) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X2), .(X3)) -> U41_gga(X2, X3, mergecD_in_gga(.(X2), X3)) U41_gga(X2, X3, mergecD_out_gga(.(X2), X3, X4)) -> mergecD_out_gga(.(X2), .(X3), .(X4)) The set Q consists of the following terms: splitcB_in_agaa(x0) mergesortcE_in_ga(x0) U35_agaa(x0, x1) U40_ga(x0, x1) splitcA_in_gaa(x0) qcC_in_aagaaaaa(x0) U34_gaa(x0, x1) U36_aagaaaaa(x0, x1) U37_aagaaaaa(x0, x1, x2, x3) U38_aagaaaaa(x0, x1, x2, x3, x4) U39_aagaaaaa(x0, x1, x2, x3, x4, x5) mergecD_in_gga(x0, x1) U41_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (168) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), splitcA_in_gaa(.(X3)))) at position [1,1] we obtained the following new rules [LPAR04]: (PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), U34_gaa(X3, splitcA_in_gaa(X3)))),PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), U34_gaa(X3, splitcA_in_gaa(X3))))) ---------------------------------------- (169) Obligation: Q DP problem: The TRS P consists of the following rules: U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> MERGESORTE_IN_GA(X4) MERGESORTE_IN_GA(.(.(X3))) -> PC_IN_AAGAAAAA(X3) U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U6_AAGAAAAA(X3, X4, X5, mergesortcE_in_ga(X4)) U6_AAGAAAAA(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5) PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), U34_gaa(X3, splitcA_in_gaa(X3)))) The TRS R consists of the following rules: splitcB_in_agaa(X2) -> U35_agaa(X2, splitcA_in_gaa(X2)) mergesortcE_in_ga([]) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.([])) -> mergesortcE_out_ga(.([]), .([])) mergesortcE_in_ga(.(.(X3))) -> U40_ga(X3, qcC_in_aagaaaaa(X3)) U35_agaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X2, .(X3), X4) U40_ga(X3, qcC_out_aagaaaaa(X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(.(X3)), X4) splitcA_in_gaa([]) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X2)) -> U34_gaa(X2, splitcA_in_gaa(X2)) qcC_in_aagaaaaa(X3) -> U36_aagaaaaa(X3, splitcB_in_agaa(.(X3))) U34_gaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X2), .(X3), X4) U36_aagaaaaa(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U37_aagaaaaa(X3, X4, X5, mergesortcE_in_ga(X4)) U37_aagaaaaa(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_in_ga(X5)) U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_in_gga(X6, X7)) U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X3, X4, X5, X6, X7, X8) mergecD_in_gga([], X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, []) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X2), .(X3)) -> U41_gga(X2, X3, mergecD_in_gga(.(X2), X3)) U41_gga(X2, X3, mergecD_out_gga(.(X2), X3, X4)) -> mergecD_out_gga(.(X2), .(X3), .(X4)) The set Q consists of the following terms: splitcB_in_agaa(x0) mergesortcE_in_ga(x0) U35_agaa(x0, x1) U40_ga(x0, x1) splitcA_in_gaa(x0) qcC_in_aagaaaaa(x0) U34_gaa(x0, x1) U36_aagaaaaa(x0, x1) U37_aagaaaaa(x0, x1, x2, x3) U38_aagaaaaa(x0, x1, x2, x3, x4) U39_aagaaaaa(x0, x1, x2, x3, x4, x5) mergecD_in_gga(x0, x1) U41_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (170) 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: MERGESORTE_IN_GA(.(.(X3))) -> PC_IN_AAGAAAAA(X3) Used ordering: Polynomial interpretation [POLO]: POL(.(x_1)) = 1 + 2*x_1 POL(MERGESORTE_IN_GA(x_1)) = x_1 POL(PC_IN_AAGAAAAA(x_1)) = 2 + 2*x_1 POL(U34_gaa(x_1, x_2)) = 1 + 2*x_2 POL(U35_agaa(x_1, x_2)) = 1 + x_2 POL(U36_aagaaaaa(x_1, x_2)) = 2 POL(U37_aagaaaaa(x_1, x_2, x_3, x_4)) = 1 POL(U38_aagaaaaa(x_1, x_2, x_3, x_4, x_5)) = 1 POL(U39_aagaaaaa(x_1, x_2, x_3, x_4, x_5, x_6)) = 0 POL(U40_ga(x_1, x_2)) = 0 POL(U41_gga(x_1, x_2, x_3)) = 0 POL(U4_AAGAAAAA(x_1, x_2)) = x_2 POL(U6_AAGAAAAA(x_1, x_2, x_3, x_4)) = x_3 POL([]) = 0 POL(mergecD_in_gga(x_1, x_2)) = 0 POL(mergecD_out_gga(x_1, x_2, x_3)) = 0 POL(mergesortcE_in_ga(x_1)) = 0 POL(mergesortcE_out_ga(x_1, x_2)) = 0 POL(qcC_in_aagaaaaa(x_1)) = 2 POL(qcC_out_aagaaaaa(x_1, x_2, x_3, x_4, x_5, x_6)) = 0 POL(splitcA_in_gaa(x_1)) = x_1 POL(splitcA_out_gaa(x_1, x_2, x_3)) = x_2 + 2*x_3 POL(splitcB_in_agaa(x_1)) = 2 + x_1 POL(splitcB_out_agaa(x_1, x_2, x_3)) = x_2 + x_3 ---------------------------------------- (171) Obligation: Q DP problem: The TRS P consists of the following rules: U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> MERGESORTE_IN_GA(X4) U4_AAGAAAAA(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U6_AAGAAAAA(X3, X4, X5, mergesortcE_in_ga(X4)) U6_AAGAAAAA(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> MERGESORTE_IN_GA(X5) PC_IN_AAGAAAAA(X3) -> U4_AAGAAAAA(X3, U35_agaa(.(X3), U34_gaa(X3, splitcA_in_gaa(X3)))) The TRS R consists of the following rules: splitcB_in_agaa(X2) -> U35_agaa(X2, splitcA_in_gaa(X2)) mergesortcE_in_ga([]) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.([])) -> mergesortcE_out_ga(.([]), .([])) mergesortcE_in_ga(.(.(X3))) -> U40_ga(X3, qcC_in_aagaaaaa(X3)) U35_agaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X2, .(X3), X4) U40_ga(X3, qcC_out_aagaaaaa(X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(.(X3)), X4) splitcA_in_gaa([]) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X2)) -> U34_gaa(X2, splitcA_in_gaa(X2)) qcC_in_aagaaaaa(X3) -> U36_aagaaaaa(X3, splitcB_in_agaa(.(X3))) U34_gaa(X2, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X2), .(X3), X4) U36_aagaaaaa(X3, splitcB_out_agaa(.(X3), X4, X5)) -> U37_aagaaaaa(X3, X4, X5, mergesortcE_in_ga(X4)) U37_aagaaaaa(X3, X4, X5, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_in_ga(X5)) U38_aagaaaaa(X3, X4, X5, X6, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_in_gga(X6, X7)) U39_aagaaaaa(X3, X4, X5, X6, X7, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X3, X4, X5, X6, X7, X8) mergecD_in_gga([], X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, []) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X2), .(X3)) -> U41_gga(X2, X3, mergecD_in_gga(.(X2), X3)) U41_gga(X2, X3, mergecD_out_gga(.(X2), X3, X4)) -> mergecD_out_gga(.(X2), .(X3), .(X4)) The set Q consists of the following terms: splitcB_in_agaa(x0) mergesortcE_in_ga(x0) U35_agaa(x0, x1) U40_ga(x0, x1) splitcA_in_gaa(x0) qcC_in_aagaaaaa(x0) U34_gaa(x0, x1) U36_aagaaaaa(x0, x1) U37_aagaaaaa(x0, x1, x2, x3) U38_aagaaaaa(x0, x1, x2, x3, x4) U39_aagaaaaa(x0, x1, x2, x3, x4, x5) mergecD_in_gga(x0, x1) U41_gga(x0, x1, x2) We have to consider all (P,Q,R)-chains. ---------------------------------------- (172) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes. ---------------------------------------- (173) TRUE ---------------------------------------- (174) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLITA_IN_AAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_AAA(X2, X4, X3) The TRS R consists of the following rules: splitcB_in_aaaa(X1, X2, .(X1, X3), X4) -> U35_aaaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) splitcA_in_aaa([], [], []) -> splitcA_out_aaa([], [], []) splitcA_in_aaa(.(X1, X2), .(X1, X3), X4) -> U34_aaa(X1, X2, X3, X4, splitcA_in_aaa(X2, X4, X3)) U34_aaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcA_out_aaa(.(X1, X2), .(X1, X3), X4) U35_aaaa(X1, X2, X3, X4, splitcA_out_aaa(X2, X4, X3)) -> splitcB_out_aaaa(X1, X2, .(X1, X3), X4) splitcB_in_agaa(X1, X2, .(X1, X3), X4) -> U35_agaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) splitcA_in_gaa([], [], []) -> splitcA_out_gaa([], [], []) splitcA_in_gaa(.(X1, X2), .(X1, X3), X4) -> U34_gaa(X1, X2, X3, X4, splitcA_in_gaa(X2, X4, X3)) U34_gaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcA_out_gaa(.(X1, X2), .(X1, X3), X4) U35_agaa(X1, X2, X3, X4, splitcA_out_gaa(X2, X4, X3)) -> splitcB_out_agaa(X1, X2, .(X1, X3), X4) mergesortcE_in_ga([], []) -> mergesortcE_out_ga([], []) mergesortcE_in_ga(.(X1, []), .(X1, [])) -> mergesortcE_out_ga(.(X1, []), .(X1, [])) mergesortcE_in_ga(.(X1, .(X2, X3)), X4) -> U40_ga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) qcC_in_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) -> U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_in_agaa(X1, .(X2, X3), X4, X5)) U36_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, splitcB_out_agaa(X1, .(X2, X3), X4, X5)) -> U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X4, X6)) U37_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X4, X6)) -> U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_in_ga(X5, X7)) U38_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergesortcE_out_ga(X5, X7)) -> U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_in_gga(X6, X7, X8)) mergecD_in_gga([], X1, X1) -> mergecD_out_gga([], X1, X1) mergecD_in_gga(X1, [], X1) -> mergecD_out_gga(X1, [], X1) mergecD_in_gga(.(X1, X2), .(X1, X3), .(X1, X4)) -> U41_gga(X1, X2, X3, X4, mergecD_in_gga(.(X1, X2), X3, X4)) U41_gga(X1, X2, X3, X4, mergecD_out_gga(.(X1, X2), X3, X4)) -> mergecD_out_gga(.(X1, X2), .(X1, X3), .(X1, X4)) U39_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8, mergecD_out_gga(X6, X7, X8)) -> qcC_out_aagaaaaa(X1, X2, X3, X4, X5, X6, X7, X8) U40_ga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcE_out_ga(.(X1, .(X2, X3)), X4) mergesortcF_in_aga(X1, [], .(X1, [])) -> mergesortcF_out_aga(X1, [], .(X1, [])) mergesortcF_in_aga(X1, .(X2, X3), X4) -> U42_aga(X1, X2, X3, X4, qcC_in_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) U42_aga(X1, X2, X3, X4, qcC_out_aagaaaaa(X1, X2, X3, X5, X6, X7, X8, X4)) -> mergesortcF_out_aga(X1, .(X2, X3), X4) The argument filtering Pi contains the following mapping: [] = [] .(x1, x2) = .(x2) splitcB_in_aaaa(x1, x2, x3, x4) = splitcB_in_aaaa U35_aaaa(x1, x2, x3, x4, x5) = U35_aaaa(x5) splitcA_in_aaa(x1, x2, x3) = splitcA_in_aaa splitcA_out_aaa(x1, x2, x3) = splitcA_out_aaa(x1, x2, x3) U34_aaa(x1, x2, x3, x4, x5) = U34_aaa(x5) splitcB_out_aaaa(x1, x2, x3, x4) = splitcB_out_aaaa(x2, x3, x4) splitcB_in_agaa(x1, x2, x3, x4) = splitcB_in_agaa(x2) U35_agaa(x1, x2, x3, x4, x5) = U35_agaa(x2, x5) splitcA_in_gaa(x1, x2, x3) = splitcA_in_gaa(x1) splitcA_out_gaa(x1, x2, x3) = splitcA_out_gaa(x1, x2, x3) U34_gaa(x1, x2, x3, x4, x5) = U34_gaa(x2, x5) splitcB_out_agaa(x1, x2, x3, x4) = splitcB_out_agaa(x2, x3, x4) mergesortcE_in_ga(x1, x2) = mergesortcE_in_ga(x1) mergesortcE_out_ga(x1, x2) = mergesortcE_out_ga(x1, x2) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x3, x5) qcC_in_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_in_aagaaaaa(x3) U36_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U36_aagaaaaa(x3, x9) U37_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U37_aagaaaaa(x3, x4, x5, x9) U38_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U38_aagaaaaa(x3, x4, x5, x6, x9) U39_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9) = U39_aagaaaaa(x3, x4, x5, x6, x7, x9) mergecD_in_gga(x1, x2, x3) = mergecD_in_gga(x1, x2) mergecD_out_gga(x1, x2, x3) = mergecD_out_gga(x1, x2, x3) U41_gga(x1, x2, x3, x4, x5) = U41_gga(x2, x3, x5) qcC_out_aagaaaaa(x1, x2, x3, x4, x5, x6, x7, x8) = qcC_out_aagaaaaa(x3, x4, x5, x6, x7, x8) mergesortcF_in_aga(x1, x2, x3) = mergesortcF_in_aga(x2) mergesortcF_out_aga(x1, x2, x3) = mergesortcF_out_aga(x2, x3) U42_aga(x1, x2, x3, x4, x5) = U42_aga(x3, x5) SPLITA_IN_AAA(x1, x2, x3) = SPLITA_IN_AAA We have to consider all (P,R,Pi)-chains ---------------------------------------- (175) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (176) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLITA_IN_AAA(.(X1, X2), .(X1, X3), X4) -> SPLITA_IN_AAA(X2, X4, X3) R is empty. The argument filtering Pi contains the following mapping: .(x1, x2) = .(x2) SPLITA_IN_AAA(x1, x2, x3) = SPLITA_IN_AAA We have to consider all (P,R,Pi)-chains ---------------------------------------- (177) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (178) Obligation: Q DP problem: The TRS P consists of the following rules: SPLITA_IN_AAA -> SPLITA_IN_AAA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (179) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by semiunifying a rule from P directly. s = SPLITA_IN_AAA evaluates to t =SPLITA_IN_AAA Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [ ] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from SPLITA_IN_AAA to SPLITA_IN_AAA. ---------------------------------------- (180) NO ---------------------------------------- (181) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 3, "program": { "directives": [], "clauses": [ [ "(mergesort ([]) ([]))", null ], [ "(mergesort (. X ([])) (. X ([])))", null ], [ "(mergesort (. X (. Y Xs)) Ys)", "(',' (split (. X (. Y Xs)) X1s X2s) (',' (mergesort X1s Y1s) (',' (mergesort X2s Y2s) (merge Y1s Y2s Ys))))" ], [ "(split ([]) ([]) ([]))", null ], [ "(split (. X Xs) (. X Ys) Zs)", "(split Xs Zs Ys)" ], [ "(merge ([]) Xs Xs)", null ], [ "(merge Xs ([]) Xs)", null ], [ "(merge (. X Xs) (. Y Ys) (. X Zs))", "(',' (= X Y) (merge (. X Xs) Ys Zs))" ] ] }, "graph": { "nodes": { "709": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "49": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "591": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T102 T103) (merge (. T102 T105) T104 X137))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "592": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "352": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T23 X24) (',' (mergesort T24 X25) (merge X24 X25 T19)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [ "X24", "X25" ], "exprvars": [] } }, "594": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T109 T110) T108 X137)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "595": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "354": { "goal": [ { "clause": 3, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }, { "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "355": { "goal": [{ "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "553": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T75 X106)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X106"], "exprvars": [] } }, "510": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "511": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "555": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "512": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "710": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "513": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "711": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "712": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "515": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "713": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "714": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T135 T140) (merge (. T135 T142) T141 T139))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T135", "T139" ], "free": [], "exprvars": [] } }, "518": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "519": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "360": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "361": { "goal": [ { "clause": 3, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }, { "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "362": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "363": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "364": { "goal": [ { "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }, { "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "562": { "goal": [ { "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "3": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "520": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "367": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "368": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "566": { "goal": [{ "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "523": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T69 (. T70 T71)) X103 X104) (',' (mergesort X103 X105) (',' (mergesort X104 X106) (merge X105 X106 X107))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X107", "X103", "X104", "X105", "X106" ], "exprvars": [] } }, "567": { "goal": [ { "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "524": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "569": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "602": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T54 X25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X25"], "exprvars": [] } }, "603": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "527": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T69 (. T70 T71)) X103 X104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X103", "X104" ], "exprvars": [] } }, "528": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T72 X105) (',' (mergesort T73 X106) (merge X105 X106 X107)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X107", "X105", "X106" ], "exprvars": [] } }, "25": { "goal": [ { "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "26": { "goal": [{ "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "27": { "goal": [ { "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }, { "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "373": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "374": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "572": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "375": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "573": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "376": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T52 X79 X78)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X78", "X79" ], "exprvars": [] } }, "574": { "goal": [{ "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "377": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "531": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T72 X105)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X105"], "exprvars": [] } }, "575": { "goal": [{ "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "532": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T75 X106) (merge T74 X106 X107))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X107", "X106" ], "exprvars": [] } }, "337": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "579": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "39": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "580": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "581": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "340": { "goal": [{ "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "341": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "342": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "343": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "344": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "740": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "345": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (split (. T20 (. T21 T22)) X22 X23) (',' (mergesort X22 X24) (',' (mergesort X23 X25) (merge X24 X25 T19))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [ "X22", "X23", "X24", "X25" ], "exprvars": [] } }, "741": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T144 T146) T145 T139)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T139", "T144" ], "free": [], "exprvars": [] } }, "346": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "500": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "742": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "502": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T54 X25) (merge T53 X25 T19))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": ["X25"], "exprvars": [] } }, "349": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "505": { "goal": [ { "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }, { "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }, { "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "703": { "goal": [ { "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }, { "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }, { "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "506": { "goal": [{ "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "704": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "507": { "goal": [ { "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }, { "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "705": { "goal": [ { "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }, { "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "706": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "707": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "708": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 3, "to": 25, "label": "CASE" }, { "from": 25, "to": 26, "label": "PARALLEL" }, { "from": 25, "to": 27, "label": "PARALLEL" }, { "from": 26, "to": 39, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 26, "to": 49, "label": "EVAL-BACKTRACK" }, { "from": 27, "to": 340, "label": "PARALLEL" }, { "from": 27, "to": 341, "label": "PARALLEL" }, { "from": 39, "to": 337, "label": "SUCCESS" }, { "from": 340, "to": 342, "label": "EVAL with clause\nmergesort(.(X5, []), .(X5, [])).\nand substitutionX5 -> T7,\nT1 -> .(T7, []),\nT2 -> .(T7, [])" }, { "from": 340, "to": 343, "label": "EVAL-BACKTRACK" }, { "from": 341, "to": 345, "label": "EVAL with clause\nmergesort(.(X18, .(X19, X20)), X21) :- ','(split(.(X18, .(X19, X20)), X22, X23), ','(mergesort(X22, X24), ','(mergesort(X23, X25), merge(X24, X25, X21)))).\nand substitutionX18 -> T20,\nX19 -> T21,\nX20 -> T22,\nT1 -> .(T20, .(T21, T22)),\nT2 -> T19,\nX21 -> T19,\nT16 -> T20,\nT17 -> T21,\nT18 -> T22" }, { "from": 341, "to": 346, "label": "EVAL-BACKTRACK" }, { "from": 342, "to": 344, "label": "SUCCESS" }, { "from": 345, "to": 349, "label": "SPLIT 1" }, { "from": 345, "to": 352, "label": "SPLIT 2\nreplacements:X22 -> T23,\nX23 -> T24" }, { "from": 349, "to": 354, "label": "CASE" }, { "from": 352, "to": 500, "label": "SPLIT 1" }, { "from": 352, "to": 502, "label": "SPLIT 2\nreplacements:X24 -> T53,\nT24 -> T54" }, { "from": 354, "to": 355, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 355, "to": 360, "label": "ONLY EVAL with clause\nsplit(.(X38, X39), .(X38, X40), X41) :- split(X39, X41, X40).\nand substitutionT20 -> T33,\nX38 -> T33,\nT21 -> T36,\nT22 -> T37,\nX39 -> .(T36, T37),\nX40 -> X42,\nX22 -> .(T33, X42),\nX23 -> X43,\nX41 -> X43,\nT34 -> T36,\nT35 -> T37" }, { "from": 360, "to": 361, "label": "CASE" }, { "from": 361, "to": 362, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 362, "to": 363, "label": "ONLY EVAL with clause\nsplit(.(X56, X57), .(X56, X58), X59) :- split(X57, X59, X58).\nand substitutionT36 -> T43,\nX56 -> T43,\nT37 -> T45,\nX57 -> T45,\nX58 -> X60,\nX43 -> .(T43, X60),\nX42 -> X61,\nX59 -> X61,\nT44 -> T45" }, { "from": 363, "to": 364, "label": "CASE" }, { "from": 364, "to": 367, "label": "PARALLEL" }, { "from": 364, "to": 368, "label": "PARALLEL" }, { "from": 367, "to": 373, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT45 -> [],\nX61 -> [],\nX60 -> []" }, { "from": 367, "to": 374, "label": "EVAL-BACKTRACK" }, { "from": 368, "to": 376, "label": "EVAL with clause\nsplit(.(X74, X75), .(X74, X76), X77) :- split(X75, X77, X76).\nand substitutionX74 -> T50,\nX75 -> T52,\nT45 -> .(T50, T52),\nX76 -> X78,\nX61 -> .(T50, X78),\nX60 -> X79,\nX77 -> X79,\nT51 -> T52" }, { "from": 368, "to": 377, "label": "EVAL-BACKTRACK" }, { "from": 373, "to": 375, "label": "SUCCESS" }, { "from": 376, "to": 363, "label": "INSTANCE with matching:\nT45 -> T52\nX61 -> X79\nX60 -> X78" }, { "from": 500, "to": 505, "label": "CASE" }, { "from": 502, "to": 602, "label": "SPLIT 1" }, { "from": 502, "to": 603, "label": "SPLIT 2\nreplacements:X25 -> T111,\nT53 -> T112" }, { "from": 505, "to": 506, "label": "PARALLEL" }, { "from": 505, "to": 507, "label": "PARALLEL" }, { "from": 506, "to": 510, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT23 -> [],\nX24 -> []" }, { "from": 506, "to": 511, "label": "EVAL-BACKTRACK" }, { "from": 507, "to": 513, "label": "PARALLEL" }, { "from": 507, "to": 515, "label": "PARALLEL" }, { "from": 510, "to": 512, "label": "SUCCESS" }, { "from": 513, "to": 518, "label": "EVAL with clause\nmergesort(.(X84, []), .(X84, [])).\nand substitutionX84 -> T59,\nT23 -> .(T59, []),\nX24 -> .(T59, [])" }, { "from": 513, "to": 519, "label": "EVAL-BACKTRACK" }, { "from": 515, "to": 523, "label": "EVAL with clause\nmergesort(.(X99, .(X100, X101)), X102) :- ','(split(.(X99, .(X100, X101)), X103, X104), ','(mergesort(X103, X105), ','(mergesort(X104, X106), merge(X105, X106, X102)))).\nand substitutionX99 -> T69,\nX100 -> T70,\nX101 -> T71,\nT23 -> .(T69, .(T70, T71)),\nX24 -> X107,\nX102 -> X107,\nT66 -> T69,\nT67 -> T70,\nT68 -> T71" }, { "from": 515, "to": 524, "label": "EVAL-BACKTRACK" }, { "from": 518, "to": 520, "label": "SUCCESS" }, { "from": 523, "to": 527, "label": "SPLIT 1" }, { "from": 523, "to": 528, "label": "SPLIT 2\nreplacements:X103 -> T72,\nX104 -> T73" }, { "from": 527, "to": 349, "label": "INSTANCE with matching:\nT20 -> T69\nT21 -> T70\nT22 -> T71\nX22 -> X103\nX23 -> X104" }, { "from": 528, "to": 531, "label": "SPLIT 1" }, { "from": 528, "to": 532, "label": "SPLIT 2\nreplacements:X105 -> T74,\nT73 -> T75" }, { "from": 531, "to": 500, "label": "INSTANCE with matching:\nT23 -> T72\nX24 -> X105" }, { "from": 532, "to": 553, "label": "SPLIT 1" }, { "from": 532, "to": 555, "label": "SPLIT 2\nreplacements:X106 -> T76,\nT74 -> T77" }, { "from": 553, "to": 500, "label": "INSTANCE with matching:\nT23 -> T75\nX24 -> X106" }, { "from": 555, "to": 562, "label": "CASE" }, { "from": 562, "to": 566, "label": "PARALLEL" }, { "from": 562, "to": 567, "label": "PARALLEL" }, { "from": 566, "to": 569, "label": "EVAL with clause\nmerge([], X114, X114).\nand substitutionT77 -> [],\nT76 -> T84,\nX114 -> T84,\nX107 -> T84" }, { "from": 566, "to": 572, "label": "EVAL-BACKTRACK" }, { "from": 567, "to": 574, "label": "PARALLEL" }, { "from": 567, "to": 575, "label": "PARALLEL" }, { "from": 569, "to": 573, "label": "SUCCESS" }, { "from": 574, "to": 579, "label": "EVAL with clause\nmerge(X119, [], X119).\nand substitutionT77 -> T89,\nX119 -> T89,\nT76 -> [],\nX107 -> T89" }, { "from": 574, "to": 580, "label": "EVAL-BACKTRACK" }, { "from": 575, "to": 591, "label": "EVAL with clause\nmerge(.(X132, X133), .(X134, X135), .(X132, X136)) :- ','(=(X132, X134), merge(.(X132, X133), X135, X136)).\nand substitutionX132 -> T102,\nX133 -> T105,\nT77 -> .(T102, T105),\nX134 -> T103,\nX135 -> T104,\nT76 -> .(T103, T104),\nX136 -> X137,\nX107 -> .(T102, X137),\nT98 -> T102,\nT100 -> T103,\nT101 -> T104,\nT99 -> T105" }, { "from": 575, "to": 592, "label": "EVAL-BACKTRACK" }, { "from": 579, "to": 581, "label": "SUCCESS" }, { "from": 591, "to": 594, "label": "UNIFY CASE with substitutionT102 -> T109,\nT103 -> T109,\nT104 -> T108,\nT107 -> T109,\nT105 -> T110" }, { "from": 591, "to": 595, "label": "UNIFY-BACKTRACK" }, { "from": 594, "to": 555, "label": "INSTANCE with matching:\nT77 -> .(T109, T110)\nT76 -> T108\nX107 -> X137" }, { "from": 602, "to": 500, "label": "INSTANCE with matching:\nT23 -> T54\nX24 -> X25" }, { "from": 603, "to": 703, "label": "CASE" }, { "from": 703, "to": 704, "label": "PARALLEL" }, { "from": 703, "to": 705, "label": "PARALLEL" }, { "from": 704, "to": 706, "label": "EVAL with clause\nmerge([], X146, X146).\nand substitutionT112 -> [],\nT111 -> T119,\nX146 -> T119,\nT19 -> T119" }, { "from": 704, "to": 707, "label": "EVAL-BACKTRACK" }, { "from": 705, "to": 709, "label": "PARALLEL" }, { "from": 705, "to": 710, "label": "PARALLEL" }, { "from": 706, "to": 708, "label": "SUCCESS" }, { "from": 709, "to": 711, "label": "EVAL with clause\nmerge(X151, [], X151).\nand substitutionT112 -> T124,\nX151 -> T124,\nT111 -> [],\nT19 -> T124" }, { "from": 709, "to": 712, "label": "EVAL-BACKTRACK" }, { "from": 710, "to": 714, "label": "EVAL with clause\nmerge(.(X162, X163), .(X164, X165), .(X162, X166)) :- ','(=(X162, X164), merge(.(X162, X163), X165, X166)).\nand substitutionX162 -> T135,\nX163 -> T142,\nT112 -> .(T135, T142),\nX164 -> T140,\nX165 -> T141,\nT111 -> .(T140, T141),\nX166 -> T139,\nT19 -> .(T135, T139),\nT137 -> T140,\nT138 -> T141,\nT136 -> T142" }, { "from": 710, "to": 740, "label": "EVAL-BACKTRACK" }, { "from": 711, "to": 713, "label": "SUCCESS" }, { "from": 714, "to": 741, "label": "UNIFY CASE with substitutionT135 -> T144,\nT140 -> T144,\nT141 -> T145,\nT142 -> T146" }, { "from": 714, "to": 742, "label": "UNIFY-BACKTRACK" }, { "from": 741, "to": 603, "label": "INSTANCE with matching:\nT112 -> .(T144, T146)\nT111 -> T145\nT19 -> T139" } ], "type": "Graph" } } ---------------------------------------- (182) Complex Obligation (AND) ---------------------------------------- (183) Obligation: Rules: f714_in(T135, T139) -> f741_in(T144, T139) :|: TRUE f741_out(x, x1) -> f714_out(x2, x1) :|: TRUE f714_in(x3, x4) -> f742_in :|: TRUE f742_out -> f714_out(x5, x6) :|: TRUE f703_out(T19) -> f603_out(T19) :|: TRUE f603_in(x7) -> f703_in(x7) :|: TRUE f703_in(x8) -> f705_in(x8) :|: TRUE f703_in(x9) -> f704_in(x9) :|: TRUE f704_out(x10) -> f703_out(x10) :|: TRUE f705_out(x11) -> f703_out(x11) :|: TRUE f705_in(x12) -> f710_in(x12) :|: TRUE f710_out(x13) -> f705_out(x13) :|: TRUE f705_in(x14) -> f709_in(x14) :|: TRUE f709_out(x15) -> f705_out(x15) :|: TRUE f741_in(x16, x17) -> f603_in(x17) :|: TRUE f603_out(x18) -> f741_out(x19, x18) :|: TRUE f710_in(x20) -> f740_in :|: TRUE f714_out(x21, x22) -> f710_out(.(x21, x22)) :|: TRUE f740_out -> f710_out(x23) :|: TRUE f710_in(.(x24, x25)) -> f714_in(x24, x25) :|: TRUE f25_out(T2) -> f3_out(T2) :|: TRUE f3_in(x26) -> f25_in(x26) :|: TRUE f25_in(x27) -> f26_in(x27) :|: TRUE f27_out(x28) -> f25_out(x28) :|: TRUE f26_out(x29) -> f25_out(x29) :|: TRUE f25_in(x30) -> f27_in(x30) :|: TRUE f340_out(x31) -> f27_out(x31) :|: TRUE f341_out(x32) -> f27_out(x32) :|: TRUE f27_in(x33) -> f341_in(x33) :|: TRUE f27_in(x34) -> f340_in(x34) :|: TRUE f341_in(x35) -> f345_in(x35) :|: TRUE f341_in(x36) -> f346_in :|: TRUE f346_out -> f341_out(x37) :|: TRUE f345_out(x38) -> f341_out(x38) :|: TRUE f345_in(x39) -> f349_in :|: TRUE f349_out -> f352_in(x40) :|: TRUE f352_out(x41) -> f345_out(x41) :|: TRUE f500_out -> f502_in(x42) :|: TRUE f502_out(x43) -> f352_out(x43) :|: TRUE f352_in(x44) -> f500_in :|: TRUE f603_out(x45) -> f502_out(x45) :|: TRUE f602_out -> f603_in(x46) :|: TRUE f502_in(x47) -> f602_in :|: TRUE Start term: f3_in(T2) ---------------------------------------- (184) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (185) TRUE ---------------------------------------- (186) Obligation: Rules: f594_out -> f591_out :|: TRUE f591_in -> f594_in :|: TRUE f595_out -> f591_out :|: TRUE f591_in -> f595_in :|: TRUE f575_in -> f591_in :|: TRUE f591_out -> f575_out :|: TRUE f575_in -> f592_in :|: TRUE f592_out -> f575_out :|: TRUE f555_in -> f562_in :|: TRUE f562_out -> f555_out :|: TRUE f566_out -> f562_out :|: TRUE f567_out -> f562_out :|: TRUE f562_in -> f567_in :|: TRUE f562_in -> f566_in :|: TRUE f555_out -> f594_out :|: TRUE f594_in -> f555_in :|: TRUE f575_out -> f567_out :|: TRUE f574_out -> f567_out :|: TRUE f567_in -> f575_in :|: TRUE f567_in -> f574_in :|: TRUE f25_out(T2) -> f3_out(T2) :|: TRUE f3_in(x) -> f25_in(x) :|: TRUE f25_in(x1) -> f26_in(x1) :|: TRUE f27_out(x2) -> f25_out(x2) :|: TRUE f26_out(x3) -> f25_out(x3) :|: TRUE f25_in(x4) -> f27_in(x4) :|: TRUE f340_out(x5) -> f27_out(x5) :|: TRUE f341_out(x6) -> f27_out(x6) :|: TRUE f27_in(x7) -> f341_in(x7) :|: TRUE f27_in(x8) -> f340_in(x8) :|: TRUE f341_in(T19) -> f345_in(T19) :|: TRUE f341_in(x9) -> f346_in :|: TRUE f346_out -> f341_out(x10) :|: TRUE f345_out(x11) -> f341_out(x11) :|: TRUE f345_in(x12) -> f349_in :|: TRUE f349_out -> f352_in(x13) :|: TRUE f352_out(x14) -> f345_out(x14) :|: TRUE f500_out -> f502_in(x15) :|: TRUE f502_out(x16) -> f352_out(x16) :|: TRUE f352_in(x17) -> f500_in :|: TRUE f505_out -> f500_out :|: TRUE f500_in -> f505_in :|: TRUE f506_out -> f505_out :|: TRUE f507_out -> f505_out :|: TRUE f505_in -> f506_in :|: TRUE f505_in -> f507_in :|: TRUE f515_out -> f507_out :|: TRUE f507_in -> f513_in :|: TRUE f513_out -> f507_out :|: TRUE f507_in -> f515_in :|: TRUE f524_out -> f515_out :|: TRUE f523_out -> f515_out :|: TRUE f515_in -> f524_in :|: TRUE f515_in -> f523_in :|: TRUE f528_out -> f523_out :|: TRUE f527_out -> f528_in :|: TRUE f523_in -> f527_in :|: TRUE f531_out -> f532_in :|: TRUE f528_in -> f531_in :|: TRUE f532_out -> f528_out :|: TRUE f532_in -> f553_in :|: TRUE f553_out -> f555_in :|: TRUE f555_out -> f532_out :|: TRUE f603_out(x18) -> f502_out(x18) :|: TRUE f602_out -> f603_in(x19) :|: TRUE f502_in(x20) -> f602_in :|: TRUE f602_in -> f500_in :|: TRUE f500_out -> f602_out :|: TRUE Start term: f3_in(T2) ---------------------------------------- (187) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (188) TRUE ---------------------------------------- (189) Obligation: Rules: f363_in -> f364_in :|: TRUE f364_out -> f363_out :|: TRUE f364_in -> f368_in :|: TRUE f368_out -> f364_out :|: TRUE f367_out -> f364_out :|: TRUE f364_in -> f367_in :|: TRUE f376_out -> f368_out :|: TRUE f368_in -> f376_in :|: TRUE f377_out -> f368_out :|: TRUE f368_in -> f377_in :|: TRUE f376_in -> f363_in :|: TRUE f363_out -> f376_out :|: TRUE f25_out(T2) -> f3_out(T2) :|: TRUE f3_in(x) -> f25_in(x) :|: TRUE f25_in(x1) -> f26_in(x1) :|: TRUE f27_out(x2) -> f25_out(x2) :|: TRUE f26_out(x3) -> f25_out(x3) :|: TRUE f25_in(x4) -> f27_in(x4) :|: TRUE f340_out(x5) -> f27_out(x5) :|: TRUE f341_out(x6) -> f27_out(x6) :|: TRUE f27_in(x7) -> f341_in(x7) :|: TRUE f27_in(x8) -> f340_in(x8) :|: TRUE f341_in(T19) -> f345_in(T19) :|: TRUE f341_in(x9) -> f346_in :|: TRUE f346_out -> f341_out(x10) :|: TRUE f345_out(x11) -> f341_out(x11) :|: TRUE f345_in(x12) -> f349_in :|: TRUE f349_out -> f352_in(x13) :|: TRUE f352_out(x14) -> f345_out(x14) :|: TRUE f500_out -> f502_in(x15) :|: TRUE f502_out(x16) -> f352_out(x16) :|: TRUE f352_in(x17) -> f500_in :|: TRUE f603_out(x18) -> f502_out(x18) :|: TRUE f602_out -> f603_in(x19) :|: TRUE f502_in(x20) -> f602_in :|: TRUE f602_in -> f500_in :|: TRUE f500_out -> f602_out :|: TRUE f505_out -> f500_out :|: TRUE f500_in -> f505_in :|: TRUE f506_out -> f505_out :|: TRUE f507_out -> f505_out :|: TRUE f505_in -> f506_in :|: TRUE f505_in -> f507_in :|: TRUE f515_out -> f507_out :|: TRUE f507_in -> f513_in :|: TRUE f513_out -> f507_out :|: TRUE f507_in -> f515_in :|: TRUE f524_out -> f515_out :|: TRUE f523_out -> f515_out :|: TRUE f515_in -> f524_in :|: TRUE f515_in -> f523_in :|: TRUE f528_out -> f523_out :|: TRUE f527_out -> f528_in :|: TRUE f523_in -> f527_in :|: TRUE f349_out -> f527_out :|: TRUE f527_in -> f349_in :|: TRUE f349_in -> f354_in :|: TRUE f354_out -> f349_out :|: TRUE f354_in -> f355_in :|: TRUE f355_out -> f354_out :|: TRUE f355_in -> f360_in :|: TRUE f360_out -> f355_out :|: TRUE f360_in -> f361_in :|: TRUE f361_out -> f360_out :|: TRUE f361_in -> f362_in :|: TRUE f362_out -> f361_out :|: TRUE f363_out -> f362_out :|: TRUE f362_in -> f363_in :|: TRUE Start term: f3_in(T2) ---------------------------------------- (190) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f363_in -> f364_in :|: TRUE f364_in -> f368_in :|: TRUE f368_in -> f376_in :|: TRUE f376_in -> f363_in :|: TRUE ---------------------------------------- (191) Obligation: Rules: f363_in -> f364_in :|: TRUE f364_in -> f368_in :|: TRUE f368_in -> f376_in :|: TRUE f376_in -> f363_in :|: TRUE ---------------------------------------- (192) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (193) Obligation: Rules: f363_in -> f363_in :|: TRUE ---------------------------------------- (194) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (195) Obligation: Rules: f363_in -> f363_in :|: TRUE ---------------------------------------- (196) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f363_in -> f363_in :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (197) Obligation: Termination digraph: Nodes: (1) f363_in -> f363_in :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (198) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f363_in() Replaced non-predefined constructor symbols by 0. ---------------------------------------- (199) Obligation: Rules: f363_in -> f363_in :|: TRUE ---------------------------------------- (200) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc) -> f(1) :|: pc = 1 && TRUE Witness term starting non-terminating reduction: f(1) ---------------------------------------- (201) NO ---------------------------------------- (202) Obligation: Rules: f354_in -> f355_in :|: TRUE f355_out -> f354_out :|: TRUE f574_in -> f580_in :|: TRUE f574_in -> f579_in :|: TRUE f579_out -> f574_out :|: TRUE f580_out -> f574_out :|: TRUE f569_out -> f566_out :|: TRUE f566_in -> f569_in :|: TRUE f566_in -> f572_in :|: TRUE f572_out -> f566_out :|: TRUE f555_in -> f562_in :|: TRUE f562_out -> f555_out :|: TRUE f531_out -> f532_in :|: TRUE f528_in -> f531_in :|: TRUE f532_out -> f528_out :|: TRUE f349_in -> f354_in :|: TRUE f354_out -> f349_out :|: TRUE f360_in -> f361_in :|: TRUE f361_out -> f360_out :|: TRUE f376_in -> f363_in :|: TRUE f363_out -> f376_out :|: TRUE f524_out -> f515_out :|: TRUE f523_out -> f515_out :|: TRUE f515_in -> f524_in :|: TRUE f515_in -> f523_in :|: TRUE f569_in -> f569_out :|: TRUE f532_in -> f553_in :|: TRUE f553_out -> f555_in :|: TRUE f555_out -> f532_out :|: TRUE f515_out -> f507_out :|: TRUE f507_in -> f513_in :|: TRUE f513_out -> f507_out :|: TRUE f507_in -> f515_in :|: TRUE f531_in -> f500_in :|: TRUE f500_out -> f531_out :|: TRUE f376_out -> f368_out :|: TRUE f368_in -> f376_in :|: TRUE f377_out -> f368_out :|: TRUE f368_in -> f377_in :|: TRUE f506_out -> f505_out :|: TRUE f507_out -> f505_out :|: TRUE f505_in -> f506_in :|: TRUE f505_in -> f507_in :|: TRUE f363_out -> f362_out :|: TRUE f362_in -> f363_in :|: TRUE f367_in -> f374_in :|: TRUE f367_in -> f373_in :|: TRUE f373_out -> f367_out :|: TRUE f374_out -> f367_out :|: TRUE f579_in -> f579_out :|: TRUE f363_in -> f364_in :|: TRUE f364_out -> f363_out :|: TRUE f349_out -> f527_out :|: TRUE f527_in -> f349_in :|: TRUE f575_out -> f567_out :|: TRUE f574_out -> f567_out :|: TRUE f567_in -> f575_in :|: TRUE f567_in -> f574_in :|: TRUE f361_in -> f362_in :|: TRUE f362_out -> f361_out :|: TRUE f373_in -> f373_out :|: TRUE f355_in -> f360_in :|: TRUE f360_out -> f355_out :|: TRUE f594_out -> f591_out :|: TRUE f591_in -> f594_in :|: TRUE f595_out -> f591_out :|: TRUE f591_in -> f595_in :|: TRUE f575_in -> f591_in :|: TRUE f591_out -> f575_out :|: TRUE f575_in -> f592_in :|: TRUE f592_out -> f575_out :|: TRUE f364_in -> f368_in :|: TRUE f368_out -> f364_out :|: TRUE f367_out -> f364_out :|: TRUE f364_in -> f367_in :|: TRUE f505_out -> f500_out :|: TRUE f500_in -> f505_in :|: TRUE f566_out -> f562_out :|: TRUE f567_out -> f562_out :|: TRUE f562_in -> f567_in :|: TRUE f562_in -> f566_in :|: TRUE f555_out -> f594_out :|: TRUE f594_in -> f555_in :|: TRUE f528_out -> f523_out :|: TRUE f527_out -> f528_in :|: TRUE f523_in -> f527_in :|: TRUE f500_out -> f553_out :|: TRUE f553_in -> f500_in :|: TRUE f25_out(T2) -> f3_out(T2) :|: TRUE f3_in(x) -> f25_in(x) :|: TRUE f25_in(x1) -> f26_in(x1) :|: TRUE f27_out(x2) -> f25_out(x2) :|: TRUE f26_out(x3) -> f25_out(x3) :|: TRUE f25_in(x4) -> f27_in(x4) :|: TRUE f340_out(x5) -> f27_out(x5) :|: TRUE f341_out(x6) -> f27_out(x6) :|: TRUE f27_in(x7) -> f341_in(x7) :|: TRUE f27_in(x8) -> f340_in(x8) :|: TRUE f341_in(T19) -> f345_in(T19) :|: TRUE f341_in(x9) -> f346_in :|: TRUE f346_out -> f341_out(x10) :|: TRUE f345_out(x11) -> f341_out(x11) :|: TRUE f345_in(x12) -> f349_in :|: TRUE f349_out -> f352_in(x13) :|: TRUE f352_out(x14) -> f345_out(x14) :|: TRUE f500_out -> f502_in(x15) :|: TRUE f502_out(x16) -> f352_out(x16) :|: TRUE f352_in(x17) -> f500_in :|: TRUE f603_out(x18) -> f502_out(x18) :|: TRUE f602_out -> f603_in(x19) :|: TRUE f502_in(x20) -> f602_in :|: TRUE f602_in -> f500_in :|: TRUE f500_out -> f602_out :|: TRUE Start term: f3_in(T2) ---------------------------------------- (203) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f354_in -> f355_in :|: TRUE f355_out -> f354_out :|: TRUE f528_in -> f531_in :|: TRUE f349_in -> f354_in :|: TRUE f354_out -> f349_out :|: TRUE f360_in -> f361_in :|: TRUE f361_out -> f360_out :|: TRUE f376_in -> f363_in :|: TRUE f363_out -> f376_out :|: TRUE f515_in -> f523_in :|: TRUE f507_in -> f515_in :|: TRUE f531_in -> f500_in :|: TRUE f376_out -> f368_out :|: TRUE f368_in -> f376_in :|: TRUE f505_in -> f507_in :|: TRUE f363_out -> f362_out :|: TRUE f362_in -> f363_in :|: TRUE f367_in -> f373_in :|: TRUE f373_out -> f367_out :|: TRUE f363_in -> f364_in :|: TRUE f364_out -> f363_out :|: TRUE f349_out -> f527_out :|: TRUE f527_in -> f349_in :|: TRUE f361_in -> f362_in :|: TRUE f362_out -> f361_out :|: TRUE f373_in -> f373_out :|: TRUE f355_in -> f360_in :|: TRUE f360_out -> f355_out :|: TRUE f364_in -> f368_in :|: TRUE f368_out -> f364_out :|: TRUE f367_out -> f364_out :|: TRUE f364_in -> f367_in :|: TRUE f500_in -> f505_in :|: TRUE f527_out -> f528_in :|: TRUE f523_in -> f527_in :|: TRUE f349_out -> f352_in(x13) :|: TRUE f352_in(x17) -> f500_in :|: TRUE ---------------------------------------- (204) Obligation: Rules: f354_in -> f355_in :|: TRUE f355_out -> f354_out :|: TRUE f528_in -> f531_in :|: TRUE f349_in -> f354_in :|: TRUE f354_out -> f349_out :|: TRUE f360_in -> f361_in :|: TRUE f361_out -> f360_out :|: TRUE f376_in -> f363_in :|: TRUE f363_out -> f376_out :|: TRUE f515_in -> f523_in :|: TRUE f507_in -> f515_in :|: TRUE f531_in -> f500_in :|: TRUE f376_out -> f368_out :|: TRUE f368_in -> f376_in :|: TRUE f505_in -> f507_in :|: TRUE f363_out -> f362_out :|: TRUE f362_in -> f363_in :|: TRUE f367_in -> f373_in :|: TRUE f373_out -> f367_out :|: TRUE f363_in -> f364_in :|: TRUE f364_out -> f363_out :|: TRUE f349_out -> f527_out :|: TRUE f527_in -> f349_in :|: TRUE f361_in -> f362_in :|: TRUE f362_out -> f361_out :|: TRUE f373_in -> f373_out :|: TRUE f355_in -> f360_in :|: TRUE f360_out -> f355_out :|: TRUE f364_in -> f368_in :|: TRUE f368_out -> f364_out :|: TRUE f367_out -> f364_out :|: TRUE f364_in -> f367_in :|: TRUE f500_in -> f505_in :|: TRUE f527_out -> f528_in :|: TRUE f523_in -> f527_in :|: TRUE f349_out -> f352_in(x13) :|: TRUE f352_in(x17) -> f500_in :|: TRUE ---------------------------------------- (205) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (206) Obligation: Rules: f364_in -> f364_in :|: TRUE f364_out -> f364_out :|: TRUE f364_out -> f364_in :|: TRUE f364_in -> f364_out :|: TRUE ---------------------------------------- (207) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (208) Obligation: Rules: f364_in -> f364_in :|: TRUE f364_out -> f364_out :|: TRUE f364_out -> f364_in :|: TRUE f364_in -> f364_out :|: TRUE ---------------------------------------- (209) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f364_in -> f364_in :|: TRUE (2) f364_out -> f364_out :|: TRUE (3) f364_out -> f364_in :|: TRUE (4) f364_in -> f364_out :|: TRUE Arcs: (1) -> (1), (4) (2) -> (2), (3) (3) -> (1), (4) (4) -> (2), (3) This digraph is fully evaluated! ---------------------------------------- (210) Obligation: Termination digraph: Nodes: (1) f364_in -> f364_in :|: TRUE (2) f364_out -> f364_in :|: TRUE (3) f364_out -> f364_out :|: TRUE (4) f364_in -> f364_out :|: TRUE Arcs: (1) -> (1), (4) (2) -> (1), (4) (3) -> (2), (3) (4) -> (2), (3) This digraph is fully evaluated! ---------------------------------------- (211) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f364_in() f364_out() Replaced non-predefined constructor symbols by 0. ---------------------------------------- (212) Obligation: Rules: f364_in -> f364_in :|: TRUE f364_out -> f364_in :|: TRUE f364_out -> f364_out :|: TRUE f364_in -> f364_out :|: TRUE ---------------------------------------- (213) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc) -> f(1) :|: pc = 1 && TRUE f(pc) -> f(1) :|: pc = 2 && TRUE f(pc) -> f(2) :|: pc = 2 && TRUE f(pc) -> f(2) :|: pc = 1 && TRUE Witness term starting non-terminating reduction: f(2) ---------------------------------------- (214) NO