/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Left Termination of the query pattern 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, 12 ms] (6) PiDP (7) DependencyGraphProof [EQUIVALENT, 0 ms] (8) AND (9) PiDP (10) UsableRulesProof [EQUIVALENT, 0 ms] (11) PiDP (12) PiDPToQDPProof [SOUND, 0 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, 3 ms] (34) QDP (35) TransformationProof [EQUIVALENT, 1 ms] (36) QDP (37) TransformationProof [EQUIVALENT, 0 ms] (38) QDP (39) QDPQMonotonicMRRProof [EQUIVALENT, 57 ms] (40) QDP (41) QDPQMonotonicMRRProof [EQUIVALENT, 43 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, 0 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, 6 ms] (61) PiDP (62) DependencyGraphProof [EQUIVALENT, 0 ms] (63) AND (64) PiDP (65) UsableRulesProof [EQUIVALENT, 0 ms] (66) PiDP (67) PiDPToQDPProof [SOUND, 3 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, 2 ms] (89) QDP (90) MRRProof [EQUIVALENT, 55 ms] (91) QDP (92) TransformationProof [EQUIVALENT, 0 ms] (93) QDP (94) TransformationProof [EQUIVALENT, 0 ms] (95) QDP (96) QDPQMonotonicMRRProof [EQUIVALENT, 33 ms] (97) QDP (98) UsableRulesProof [EQUIVALENT, 0 ms] (99) QDP (100) QReductionProof [EQUIVALENT, 2 ms] (101) QDP (102) QDPQMonotonicMRRProof [EQUIVALENT, 0 ms] (103) QDP (104) UsableRulesProof [EQUIVALENT, 0 ms] (105) QDP (106) QReductionProof [EQUIVALENT, 0 ms] (107) QDP (108) QDPOrderProof [EQUIVALENT, 14 ms] (109) QDP (110) DependencyGraphProof [EQUIVALENT, 0 ms] (111) TRUE (112) PiDP (113) UsableRulesProof [EQUIVALENT, 0 ms] (114) PiDP (115) PiDPToQDPProof [SOUND, 0 ms] (116) QDP (117) PrologToTRSTransformerProof [SOUND, 30 ms] (118) QTRS (119) QTRSRRRProof [EQUIVALENT, 262 ms] (120) QTRS (121) DependencyPairsProof [EQUIVALENT, 0 ms] (122) QDP (123) DependencyGraphProof [EQUIVALENT, 0 ms] (124) AND (125) QDP (126) UsableRulesProof [EQUIVALENT, 0 ms] (127) QDP (128) NonTerminationLoopProof [COMPLETE, 0 ms] (129) NO (130) QDP (131) UsableRulesProof [EQUIVALENT, 0 ms] (132) QDP (133) NonTerminationLoopProof [COMPLETE, 0 ms] (134) NO (135) QDP (136) PrologToIRSwTTransformerProof [SOUND, 85 ms] (137) AND (138) IRSwT (139) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (140) TRUE (141) IRSwT (142) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (143) TRUE (144) IRSwT (145) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (146) IRSwT (147) IntTRSCompressionProof [EQUIVALENT, 21 ms] (148) IRSwT (149) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (150) IRSwT (151) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (152) IRSwT (153) FilterProof [EQUIVALENT, 3 ms] (154) IntTRS (155) IntTRSNonPeriodicNontermProof [COMPLETE, 5 ms] (156) NO (157) IRSwT (158) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (159) IRSwT (160) IntTRSCompressionProof [EQUIVALENT, 9 ms] (161) IRSwT (162) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (163) IRSwT (164) IRSwTTerminationDigraphProof [EQUIVALENT, 11 ms] (165) IRSwT (166) FilterProof [EQUIVALENT, 0 ms] (167) IntTRS (168) IntTRSPeriodicNontermProof [COMPLETE, 0 ms] (169) NO (170) PrologToDTProblemTransformerProof [SOUND, 83 ms] (171) TRIPLES (172) UndefinedPredicateInTriplesTransformerProof [SOUND, 0 ms] (173) TRIPLES (174) TriplesToPiDPProof [SOUND, 20 ms] (175) PiDP (176) DependencyGraphProof [EQUIVALENT, 0 ms] (177) AND (178) PiDP (179) UsableRulesProof [EQUIVALENT, 0 ms] (180) PiDP (181) PiDPToQDPProof [SOUND, 0 ms] (182) QDP (183) QDPSizeChangeProof [EQUIVALENT, 0 ms] (184) YES (185) PiDP (186) UsableRulesProof [EQUIVALENT, 0 ms] (187) PiDP (188) PiDPToQDPProof [SOUND, 0 ms] (189) QDP (190) QDPSizeChangeProof [EQUIVALENT, 0 ms] (191) YES (192) PiDP (193) UsableRulesProof [EQUIVALENT, 0 ms] (194) PiDP (195) PiDPToQDPProof [SOUND, 0 ms] (196) QDP (197) QDPSizeChangeProof [EQUIVALENT, 0 ms] (198) YES (199) PiDP (200) UsableRulesProof [EQUIVALENT, 0 ms] (201) PiDP (202) PiDPToQDPProof [SOUND, 0 ms] (203) QDP (204) TransformationProof [EQUIVALENT, 0 ms] (205) QDP (206) TransformationProof [EQUIVALENT, 0 ms] (207) QDP (208) QDPQMonotonicMRRProof [EQUIVALENT, 128 ms] (209) QDP (210) DependencyGraphProof [EQUIVALENT, 0 ms] (211) TRUE (212) PiDP (213) UsableRulesProof [EQUIVALENT, 0 ms] (214) PiDP (215) PiDPToQDPProof [SOUND, 0 ms] (216) QDP (217) NonTerminationLoopProof [COMPLETE, 0 ms] (218) 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) 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: 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) Used ordering: Polynomial interpretation [POLO]: POL(.(x_1)) = 0 POL(MERGESORT_IN_GA(x_1)) = 1 POL(U1_GA(x_1)) = 1 + x_1 POL(U1_ga(x_1)) = 2*x_1 POL(U2_GA(x_1, x_2)) = x_2 POL(U2_ga(x_1, x_2)) = 2*x_2 POL(U3_ga(x_1, x_2)) = 2 POL(U4_ga(x_1)) = 2 POL(U5_gaa(x_1)) = 0 POL([]) = 2 POL(merge_in_gga(x_1, x_2)) = 1 POL(merge_out_gga(x_1)) = 0 POL(mergesort_in_ga(x_1)) = x_1 POL(mergesort_out_ga(x_1)) = 2 POL(split_in_gaa(x_1)) = x_1 POL(split_out_gaa(x_1, x_2)) = x_1 ---------------------------------------- (103) 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. ---------------------------------------- (104) 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. ---------------------------------------- (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) 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) 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) ---------------------------------------- (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: split_in_gaa(x0) U5_gaa(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (108) 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(U5_gaa(U5_gaa(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)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(split_out_gaa(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[1A]] * x_2 >>> <<< POL(MERGESORT_IN_GA(x_1)) = [[1A]] + [[0A]] * x_1 >>> <<< POL(.(x_1)) = [[-I]] + [[2A]] * x_1 >>> <<< POL(U5_gaa(x_1)) = [[-I]] + [[1A]] * x_1 >>> <<< 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(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) ---------------------------------------- (109) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) 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) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (111) TRUE ---------------------------------------- (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) 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 ---------------------------------------- (113) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (114) Obligation: Pi DP problem: The TRS P consists of the following rules: 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 ---------------------------------------- (115) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (116) Obligation: Q DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA -> SPLIT_IN_AAA R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (117) 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": { "type": "Nodes", "231": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "630": { "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": [] } }, "632": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "238": { "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": [] } }, "634": { "goal": [{ "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "635": { "goal": [{ "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "638": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "639": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "56": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "57": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "58": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "59": { "goal": [{ "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "283": { "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": [] } }, "440": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "441": { "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": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "442": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "640": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "3": { "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": [] } }, "443": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "444": { "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": [] } }, "445": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "687": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T54 X25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X25"], "exprvars": [] } }, "446": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "688": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "7": { "goal": [{ "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "447": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "689": { "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": [] } }, "8": { "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": [] } }, "448": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "449": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "603": { "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": [] } }, "60": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "604": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "61": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "209": { "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": [] } }, "605": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T69 (. T70 T71)) X103 X104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X103", "X104" ], "exprvars": [] } }, "649": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T102 T103) (merge (. T102 T105) T104 X137))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "62": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "606": { "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": [] } }, "63": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "607": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T72 X105)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X105"], "exprvars": [] } }, "608": { "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": [] } }, "490": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "491": { "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": [] } }, "294": { "goal": [{ "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "690": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "691": { "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": [] } }, "494": { "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": [] } }, "692": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "693": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "210": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "496": { "goal": [{ "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "650": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "694": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "651": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T109 T110) T108 X137)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "695": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "498": { "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": [] } }, "652": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "696": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "697": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "698": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "699": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "458": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T52 X79 X78)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X78", "X79" ], "exprvars": [] } }, "461": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "500": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "501": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "502": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "700": { "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": [] } }, "503": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "701": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "504": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "625": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T75 X106)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X106"], "exprvars": [] } }, "702": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T144 T146) T145 T139)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T139", "T144" ], "free": [], "exprvars": [] } }, "505": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "626": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "703": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "506": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "627": { "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": [] } }, "507": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "628": { "goal": [{ "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "629": { "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": [] } } }, "edges": [ { "from": 2, "to": 3, "label": "CASE" }, { "from": 3, "to": 7, "label": "PARALLEL" }, { "from": 3, "to": 8, "label": "PARALLEL" }, { "from": 7, "to": 56, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 7, "to": 57, "label": "EVAL-BACKTRACK" }, { "from": 8, "to": 59, "label": "PARALLEL" }, { "from": 8, "to": 60, "label": "PARALLEL" }, { "from": 56, "to": 58, "label": "SUCCESS" }, { "from": 59, "to": 61, "label": "EVAL with clause\nmergesort(.(X5, []), .(X5, [])).\nand substitutionX5 -> T7,\nT1 -> .(T7, []),\nT2 -> .(T7, [])" }, { "from": 59, "to": 62, "label": "EVAL-BACKTRACK" }, { "from": 60, "to": 209, "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": 60, "to": 210, "label": "EVAL-BACKTRACK" }, { "from": 61, "to": 63, "label": "SUCCESS" }, { "from": 209, "to": 231, "label": "SPLIT 1" }, { "from": 209, "to": 238, "label": "SPLIT 2\nreplacements:X22 -> T23,\nX23 -> T24" }, { "from": 231, "to": 283, "label": "CASE" }, { "from": 238, "to": 490, "label": "SPLIT 1" }, { "from": 238, "to": 491, "label": "SPLIT 2\nreplacements:X24 -> T53,\nT24 -> T54" }, { "from": 283, "to": 294, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 294, "to": 440, "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": 440, "to": 441, "label": "CASE" }, { "from": 441, "to": 442, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 442, "to": 443, "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": 443, "to": 444, "label": "CASE" }, { "from": 444, "to": 445, "label": "PARALLEL" }, { "from": 444, "to": 446, "label": "PARALLEL" }, { "from": 445, "to": 447, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT45 -> [],\nX61 -> [],\nX60 -> []" }, { "from": 445, "to": 448, "label": "EVAL-BACKTRACK" }, { "from": 446, "to": 458, "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": 446, "to": 461, "label": "EVAL-BACKTRACK" }, { "from": 447, "to": 449, "label": "SUCCESS" }, { "from": 458, "to": 443, "label": "INSTANCE with matching:\nT45 -> T52\nX61 -> X79\nX60 -> X78" }, { "from": 490, "to": 494, "label": "CASE" }, { "from": 491, "to": 687, "label": "SPLIT 1" }, { "from": 491, "to": 688, "label": "SPLIT 2\nreplacements:X25 -> T111,\nT53 -> T112" }, { "from": 494, "to": 496, "label": "PARALLEL" }, { "from": 494, "to": 498, "label": "PARALLEL" }, { "from": 496, "to": 500, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT23 -> [],\nX24 -> []" }, { "from": 496, "to": 501, "label": "EVAL-BACKTRACK" }, { "from": 498, "to": 503, "label": "PARALLEL" }, { "from": 498, "to": 504, "label": "PARALLEL" }, { "from": 500, "to": 502, "label": "SUCCESS" }, { "from": 503, "to": 505, "label": "EVAL with clause\nmergesort(.(X84, []), .(X84, [])).\nand substitutionX84 -> T59,\nT23 -> .(T59, []),\nX24 -> .(T59, [])" }, { "from": 503, "to": 506, "label": "EVAL-BACKTRACK" }, { "from": 504, "to": 603, "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": 504, "to": 604, "label": "EVAL-BACKTRACK" }, { "from": 505, "to": 507, "label": "SUCCESS" }, { "from": 603, "to": 605, "label": "SPLIT 1" }, { "from": 603, "to": 606, "label": "SPLIT 2\nreplacements:X103 -> T72,\nX104 -> T73" }, { "from": 605, "to": 231, "label": "INSTANCE with matching:\nT20 -> T69\nT21 -> T70\nT22 -> T71\nX22 -> X103\nX23 -> X104" }, { "from": 606, "to": 607, "label": "SPLIT 1" }, { "from": 606, "to": 608, "label": "SPLIT 2\nreplacements:X105 -> T74,\nT73 -> T75" }, { "from": 607, "to": 490, "label": "INSTANCE with matching:\nT23 -> T72\nX24 -> X105" }, { "from": 608, "to": 625, "label": "SPLIT 1" }, { "from": 608, "to": 626, "label": "SPLIT 2\nreplacements:X106 -> T76,\nT74 -> T77" }, { "from": 625, "to": 490, "label": "INSTANCE with matching:\nT23 -> T75\nX24 -> X106" }, { "from": 626, "to": 627, "label": "CASE" }, { "from": 627, "to": 628, "label": "PARALLEL" }, { "from": 627, "to": 629, "label": "PARALLEL" }, { "from": 628, "to": 630, "label": "EVAL with clause\nmerge([], X114, X114).\nand substitutionT77 -> [],\nT76 -> T84,\nX114 -> T84,\nX107 -> T84" }, { "from": 628, "to": 631, "label": "EVAL-BACKTRACK" }, { "from": 629, "to": 634, "label": "PARALLEL" }, { "from": 629, "to": 635, "label": "PARALLEL" }, { "from": 630, "to": 632, "label": "SUCCESS" }, { "from": 634, "to": 638, "label": "EVAL with clause\nmerge(X119, [], X119).\nand substitutionT77 -> T89,\nX119 -> T89,\nT76 -> [],\nX107 -> T89" }, { "from": 634, "to": 639, "label": "EVAL-BACKTRACK" }, { "from": 635, "to": 649, "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": 635, "to": 650, "label": "EVAL-BACKTRACK" }, { "from": 638, "to": 640, "label": "SUCCESS" }, { "from": 649, "to": 651, "label": "UNIFY CASE with substitutionT102 -> T109,\nT103 -> T109,\nT104 -> T108,\nT107 -> T109,\nT105 -> T110" }, { "from": 649, "to": 652, "label": "UNIFY-BACKTRACK" }, { "from": 651, "to": 626, "label": "INSTANCE with matching:\nT77 -> .(T109, T110)\nT76 -> T108\nX107 -> X137" }, { "from": 687, "to": 490, "label": "INSTANCE with matching:\nT23 -> T54\nX24 -> X25" }, { "from": 688, "to": 689, "label": "CASE" }, { "from": 689, "to": 690, "label": "PARALLEL" }, { "from": 689, "to": 691, "label": "PARALLEL" }, { "from": 690, "to": 692, "label": "EVAL with clause\nmerge([], X146, X146).\nand substitutionT112 -> [],\nT111 -> T119,\nX146 -> T119,\nT19 -> T119" }, { "from": 690, "to": 693, "label": "EVAL-BACKTRACK" }, { "from": 691, "to": 695, "label": "PARALLEL" }, { "from": 691, "to": 696, "label": "PARALLEL" }, { "from": 692, "to": 694, "label": "SUCCESS" }, { "from": 695, "to": 697, "label": "EVAL with clause\nmerge(X151, [], X151).\nand substitutionT112 -> T124,\nX151 -> T124,\nT111 -> [],\nT19 -> T124" }, { "from": 695, "to": 698, "label": "EVAL-BACKTRACK" }, { "from": 696, "to": 700, "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": 696, "to": 701, "label": "EVAL-BACKTRACK" }, { "from": 697, "to": 699, "label": "SUCCESS" }, { "from": 700, "to": 702, "label": "UNIFY CASE with substitutionT135 -> T144,\nT140 -> T144,\nT141 -> T145,\nT142 -> T146" }, { "from": 700, "to": 703, "label": "UNIFY-BACKTRACK" }, { "from": 702, "to": 688, "label": "INSTANCE with matching:\nT112 -> .(T144, T146)\nT111 -> T145\nT19 -> T139" } ], "type": "Graph" } } ---------------------------------------- (118) 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(f209_in(T19), T19) U1(f209_out1(X24, X25), T19) -> f2_out1 f443_in -> f443_out1 f443_in -> U2(f443_in) U2(f443_out1) -> f443_out1 f231_in -> U3(f443_in) U3(f443_out1) -> f231_out1 f490_in -> f490_out1 f490_in -> U4(f603_in) U4(f603_out1) -> f490_out1 f626_in -> f626_out1 f626_in -> U5(f626_in) U5(f626_out1) -> f626_out1 f688_in(T119) -> f688_out1([], T119) f688_in(T124) -> f688_out1(T124, []) f688_in(.(T144, T139)) -> U6(f688_in(T139), .(T144, T139)) U6(f688_out1(.(T144, T146), T145), .(T144, T139)) -> f688_out1(.(T144, T146), .(T144, T145)) f209_in(T19) -> U7(f231_in, T19) U7(f231_out1, T19) -> U8(f238_in(T19), T19) U8(f238_out1(X24, X25), T19) -> f209_out1(X24, X25) f238_in(T19) -> U9(f490_in, T19) U9(f490_out1, T19) -> U10(f491_in(T19), T19) U10(f491_out1(T53, X25), T19) -> f238_out1(T53, X25) f491_in(T19) -> U11(f490_in, T19) U11(f490_out1, T19) -> U12(f688_in(T19), T19) U12(f688_out1(T112, T111), T19) -> f491_out1(T112, T111) f603_in -> U13(f231_in) U13(f231_out1) -> U14(f606_in) U14(f606_out1) -> f603_out1 f606_in -> U15(f490_in) U15(f490_out1) -> U16(f608_in) U16(f608_out1) -> f606_out1 f608_in -> U17(f490_in) U17(f490_out1) -> U18(f626_in) U18(f626_out1) -> f608_out1 Q is empty. ---------------------------------------- (119) QTRSRRRProof (EQUIVALENT) Used ordering: f2_in/1(YES) []/0) f2_out1/0) ./2(YES,YES) U1/2(YES,YES) f209_in/1(YES) f209_out1/2(YES,YES) f443_in/0) f443_out1/0) U2/1)YES( f231_in/0) U3/1)YES( f231_out1/0) f490_in/0) f490_out1/0) U4/1)YES( f603_in/0) f603_out1/0) f626_in/0) f626_out1/0) U5/1)YES( f688_in/1(YES) f688_out1/2(YES,YES) U6/2(YES,YES) U7/2(YES,YES) U8/2(YES,YES) f238_in/1(YES) f238_out1/2(YES,YES) U9/2(YES,YES) U10/2(YES,YES) f491_in/1(YES) f491_out1/2(YES,YES) U11/2(YES,YES) U12/2(YES,YES) U13/1)YES( U14/1)YES( f606_in/0) f606_out1/0) U15/1)YES( U16/1)YES( f608_in/0) f608_out1/0) U17/1)YES( U18/1)YES( Quasi precedence: f2_in_1 > U1_2 > f2_out1 f2_in_1 > f209_in_1 > U7_2 > f238_in_1 > [U9_2, f491_in_1] > [[], f688_in_1, U11_2] > f2_out1 f2_in_1 > f209_in_1 > U7_2 > f238_in_1 > [U9_2, f491_in_1] > [[], f688_in_1, U11_2] > U6_2 > f688_out1_2 > ._2 f2_in_1 > f209_in_1 > U7_2 > f238_in_1 > [U9_2, f491_in_1] > [[], f688_in_1, U11_2] > U6_2 > f688_out1_2 > f491_out1_2 f2_in_1 > f209_in_1 > U7_2 > f238_in_1 > [U9_2, f491_in_1] > [[], f688_in_1, U11_2] > U12_2 > f491_out1_2 f2_in_1 > f209_in_1 > U7_2 > f238_in_1 > [U9_2, f491_in_1] > [f443_in, f443_out1, f231_in, f231_out1, f490_in, f490_out1, f603_in, f603_out1, f626_in, f626_out1, f606_in, f606_out1, f608_in, f608_out1] > U8_2 f2_in_1 > f209_in_1 > U7_2 > f238_in_1 > [U9_2, f491_in_1] > U10_2 > f238_out1_2 > f209_out1_2 > f2_out1 Status: f2_in_1: multiset status []: multiset status f2_out1: multiset status ._2: multiset status U1_2: multiset status f209_in_1: [1] f209_out1_2: multiset status f443_in: multiset status f443_out1: multiset status f231_in: multiset status f231_out1: multiset status f490_in: multiset status f490_out1: multiset status f603_in: multiset status f603_out1: multiset status f626_in: multiset status f626_out1: multiset status f688_in_1: multiset status f688_out1_2: multiset status U6_2: multiset status U7_2: multiset status U8_2: multiset status f238_in_1: multiset status f238_out1_2: multiset status U9_2: multiset status U10_2: multiset status f491_in_1: multiset status f491_out1_2: multiset status U11_2: multiset status U12_2: multiset status f606_in: multiset status f606_out1: multiset status f608_in: multiset status f608_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(f209_in(T19), T19) U1(f209_out1(X24, X25), T19) -> f2_out1 f688_in(T119) -> f688_out1([], T119) f688_in(T124) -> f688_out1(T124, []) f688_in(.(T144, T139)) -> U6(f688_in(T139), .(T144, T139)) U6(f688_out1(.(T144, T146), T145), .(T144, T139)) -> f688_out1(.(T144, T146), .(T144, T145)) f209_in(T19) -> U7(f231_in, T19) U7(f231_out1, T19) -> U8(f238_in(T19), T19) U8(f238_out1(X24, X25), T19) -> f209_out1(X24, X25) f238_in(T19) -> U9(f490_in, T19) U9(f490_out1, T19) -> U10(f491_in(T19), T19) U10(f491_out1(T53, X25), T19) -> f238_out1(T53, X25) f491_in(T19) -> U11(f490_in, T19) U11(f490_out1, T19) -> U12(f688_in(T19), T19) U12(f688_out1(T112, T111), T19) -> f491_out1(T112, T111) ---------------------------------------- (120) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f443_in -> f443_out1 f443_in -> U2(f443_in) U2(f443_out1) -> f443_out1 f231_in -> U3(f443_in) U3(f443_out1) -> f231_out1 f490_in -> f490_out1 f490_in -> U4(f603_in) U4(f603_out1) -> f490_out1 f626_in -> f626_out1 f626_in -> U5(f626_in) U5(f626_out1) -> f626_out1 f603_in -> U13(f231_in) U13(f231_out1) -> U14(f606_in) U14(f606_out1) -> f603_out1 f606_in -> U15(f490_in) U15(f490_out1) -> U16(f608_in) U16(f608_out1) -> f606_out1 f608_in -> U17(f490_in) U17(f490_out1) -> U18(f626_in) U18(f626_out1) -> f608_out1 Q is empty. ---------------------------------------- (121) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (122) Obligation: Q DP problem: The TRS P consists of the following rules: F443_IN -> U2^1(f443_in) F443_IN -> F443_IN F231_IN -> U3^1(f443_in) F231_IN -> F443_IN F490_IN -> U4^1(f603_in) F490_IN -> F603_IN F626_IN -> U5^1(f626_in) F626_IN -> F626_IN F603_IN -> U13^1(f231_in) F603_IN -> F231_IN U13^1(f231_out1) -> U14^1(f606_in) U13^1(f231_out1) -> F606_IN F606_IN -> U15^1(f490_in) F606_IN -> F490_IN U15^1(f490_out1) -> U16^1(f608_in) U15^1(f490_out1) -> F608_IN F608_IN -> U17^1(f490_in) F608_IN -> F490_IN U17^1(f490_out1) -> U18^1(f626_in) U17^1(f490_out1) -> F626_IN The TRS R consists of the following rules: f443_in -> f443_out1 f443_in -> U2(f443_in) U2(f443_out1) -> f443_out1 f231_in -> U3(f443_in) U3(f443_out1) -> f231_out1 f490_in -> f490_out1 f490_in -> U4(f603_in) U4(f603_out1) -> f490_out1 f626_in -> f626_out1 f626_in -> U5(f626_in) U5(f626_out1) -> f626_out1 f603_in -> U13(f231_in) U13(f231_out1) -> U14(f606_in) U14(f606_out1) -> f603_out1 f606_in -> U15(f490_in) U15(f490_out1) -> U16(f608_in) U16(f608_out1) -> f606_out1 f608_in -> U17(f490_in) U17(f490_out1) -> U18(f626_in) U18(f626_out1) -> f608_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (123) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 11 less nodes. ---------------------------------------- (124) Complex Obligation (AND) ---------------------------------------- (125) Obligation: Q DP problem: The TRS P consists of the following rules: F626_IN -> F626_IN The TRS R consists of the following rules: f443_in -> f443_out1 f443_in -> U2(f443_in) U2(f443_out1) -> f443_out1 f231_in -> U3(f443_in) U3(f443_out1) -> f231_out1 f490_in -> f490_out1 f490_in -> U4(f603_in) U4(f603_out1) -> f490_out1 f626_in -> f626_out1 f626_in -> U5(f626_in) U5(f626_out1) -> f626_out1 f603_in -> U13(f231_in) U13(f231_out1) -> U14(f606_in) U14(f606_out1) -> f603_out1 f606_in -> U15(f490_in) U15(f490_out1) -> U16(f608_in) U16(f608_out1) -> f606_out1 f608_in -> U17(f490_in) U17(f490_out1) -> U18(f626_in) U18(f626_out1) -> f608_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (126) 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. ---------------------------------------- (127) Obligation: Q DP problem: The TRS P consists of the following rules: F626_IN -> F626_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (128) 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 = F626_IN evaluates to t =F626_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 F626_IN to F626_IN. ---------------------------------------- (129) NO ---------------------------------------- (130) Obligation: Q DP problem: The TRS P consists of the following rules: F443_IN -> F443_IN The TRS R consists of the following rules: f443_in -> f443_out1 f443_in -> U2(f443_in) U2(f443_out1) -> f443_out1 f231_in -> U3(f443_in) U3(f443_out1) -> f231_out1 f490_in -> f490_out1 f490_in -> U4(f603_in) U4(f603_out1) -> f490_out1 f626_in -> f626_out1 f626_in -> U5(f626_in) U5(f626_out1) -> f626_out1 f603_in -> U13(f231_in) U13(f231_out1) -> U14(f606_in) U14(f606_out1) -> f603_out1 f606_in -> U15(f490_in) U15(f490_out1) -> U16(f608_in) U16(f608_out1) -> f606_out1 f608_in -> U17(f490_in) U17(f490_out1) -> U18(f626_in) U18(f626_out1) -> f608_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (131) 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. ---------------------------------------- (132) Obligation: Q DP problem: The TRS P consists of the following rules: F443_IN -> F443_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (133) 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 = F443_IN evaluates to t =F443_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 F443_IN to F443_IN. ---------------------------------------- (134) NO ---------------------------------------- (135) Obligation: Q DP problem: The TRS P consists of the following rules: F603_IN -> U13^1(f231_in) U13^1(f231_out1) -> F606_IN F606_IN -> U15^1(f490_in) U15^1(f490_out1) -> F608_IN F608_IN -> F490_IN F490_IN -> F603_IN F606_IN -> F490_IN The TRS R consists of the following rules: f443_in -> f443_out1 f443_in -> U2(f443_in) U2(f443_out1) -> f443_out1 f231_in -> U3(f443_in) U3(f443_out1) -> f231_out1 f490_in -> f490_out1 f490_in -> U4(f603_in) U4(f603_out1) -> f490_out1 f626_in -> f626_out1 f626_in -> U5(f626_in) U5(f626_out1) -> f626_out1 f603_in -> U13(f231_in) U13(f231_out1) -> U14(f606_in) U14(f606_out1) -> f603_out1 f606_in -> U15(f490_in) U15(f490_out1) -> U16(f608_in) U16(f608_out1) -> f606_out1 f608_in -> U17(f490_in) U17(f490_out1) -> U18(f626_in) U18(f626_out1) -> f608_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (136) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "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": { "44": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "45": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "46": { "goal": [{ "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "47": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "48": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "49": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "670": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "473": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "671": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "474": { "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": [] } }, "672": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "475": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "476": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "477": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "313": { "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": [] } }, "478": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "479": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "556": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T69 (. T70 T71)) X103 X104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X103", "X104" ], "exprvars": [] } }, "633": { "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": [] } }, "315": { "goal": [{ "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "636": { "goal": [{ "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "637": { "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": [] } }, "50": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "480": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T52 X79 X78)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X78", "X79" ], "exprvars": [] } }, "481": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "482": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "483": { "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": [] } }, "560": { "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": [] } }, "681": { "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": [] } }, "484": { "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": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "485": { "goal": [{ "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "683": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "486": { "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": [] } }, "684": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T144 T146) T145 T139)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T139", "T144" ], "free": [], "exprvars": [] } }, "487": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "641": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "685": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "488": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "642": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "489": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "566": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T72 X105)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X105"], "exprvars": [] } }, "643": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "204": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "567": { "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": [] } }, "644": { "goal": [{ "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "205": { "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": [] } }, "645": { "goal": [{ "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "646": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "647": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "648": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "64": { "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": [] } }, "65": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "492": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "493": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "570": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T75 X106)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X106"], "exprvars": [] } }, "571": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "374": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "495": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "497": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "378": { "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": [] } }, "499": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "653": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T102 T103) (merge (. T102 T105) T104 X137))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "379": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "654": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "655": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T109 T110) T108 X137)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "656": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "657": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T54 X25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X25"], "exprvars": [] } }, "658": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "659": { "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": [] } }, "660": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "661": { "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": [] } }, "662": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "663": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "664": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "665": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "666": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "40": { "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": [] } }, "41": { "goal": [{ "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "508": { "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": [] } }, "42": { "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": [] } }, "509": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "43": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 1, "to": 40, "label": "CASE" }, { "from": 40, "to": 41, "label": "PARALLEL" }, { "from": 40, "to": 42, "label": "PARALLEL" }, { "from": 41, "to": 43, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 41, "to": 44, "label": "EVAL-BACKTRACK" }, { "from": 42, "to": 46, "label": "PARALLEL" }, { "from": 42, "to": 47, "label": "PARALLEL" }, { "from": 43, "to": 45, "label": "SUCCESS" }, { "from": 46, "to": 48, "label": "EVAL with clause\nmergesort(.(X5, []), .(X5, [])).\nand substitutionX5 -> T7,\nT1 -> .(T7, []),\nT2 -> .(T7, [])" }, { "from": 46, "to": 49, "label": "EVAL-BACKTRACK" }, { "from": 47, "to": 64, "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": 47, "to": 65, "label": "EVAL-BACKTRACK" }, { "from": 48, "to": 50, "label": "SUCCESS" }, { "from": 64, "to": 204, "label": "SPLIT 1" }, { "from": 64, "to": 205, "label": "SPLIT 2\nreplacements:X22 -> T23,\nX23 -> T24" }, { "from": 204, "to": 313, "label": "CASE" }, { "from": 205, "to": 482, "label": "SPLIT 1" }, { "from": 205, "to": 483, "label": "SPLIT 2\nreplacements:X24 -> T53,\nT24 -> T54" }, { "from": 313, "to": 315, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 315, "to": 374, "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": 374, "to": 378, "label": "CASE" }, { "from": 378, "to": 379, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 379, "to": 473, "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": 473, "to": 474, "label": "CASE" }, { "from": 474, "to": 475, "label": "PARALLEL" }, { "from": 474, "to": 476, "label": "PARALLEL" }, { "from": 475, "to": 477, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT45 -> [],\nX61 -> [],\nX60 -> []" }, { "from": 475, "to": 478, "label": "EVAL-BACKTRACK" }, { "from": 476, "to": 480, "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": 476, "to": 481, "label": "EVAL-BACKTRACK" }, { "from": 477, "to": 479, "label": "SUCCESS" }, { "from": 480, "to": 473, "label": "INSTANCE with matching:\nT45 -> T52\nX61 -> X79\nX60 -> X78" }, { "from": 482, "to": 484, "label": "CASE" }, { "from": 483, "to": 657, "label": "SPLIT 1" }, { "from": 483, "to": 658, "label": "SPLIT 2\nreplacements:X25 -> T111,\nT53 -> T112" }, { "from": 484, "to": 485, "label": "PARALLEL" }, { "from": 484, "to": 486, "label": "PARALLEL" }, { "from": 485, "to": 487, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT23 -> [],\nX24 -> []" }, { "from": 485, "to": 488, "label": "EVAL-BACKTRACK" }, { "from": 486, "to": 492, "label": "PARALLEL" }, { "from": 486, "to": 493, "label": "PARALLEL" }, { "from": 487, "to": 489, "label": "SUCCESS" }, { "from": 492, "to": 495, "label": "EVAL with clause\nmergesort(.(X84, []), .(X84, [])).\nand substitutionX84 -> T59,\nT23 -> .(T59, []),\nX24 -> .(T59, [])" }, { "from": 492, "to": 497, "label": "EVAL-BACKTRACK" }, { "from": 493, "to": 508, "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": 493, "to": 509, "label": "EVAL-BACKTRACK" }, { "from": 495, "to": 499, "label": "SUCCESS" }, { "from": 508, "to": 556, "label": "SPLIT 1" }, { "from": 508, "to": 560, "label": "SPLIT 2\nreplacements:X103 -> T72,\nX104 -> T73" }, { "from": 556, "to": 204, "label": "INSTANCE with matching:\nT20 -> T69\nT21 -> T70\nT22 -> T71\nX22 -> X103\nX23 -> X104" }, { "from": 560, "to": 566, "label": "SPLIT 1" }, { "from": 560, "to": 567, "label": "SPLIT 2\nreplacements:X105 -> T74,\nT73 -> T75" }, { "from": 566, "to": 482, "label": "INSTANCE with matching:\nT23 -> T72\nX24 -> X105" }, { "from": 567, "to": 570, "label": "SPLIT 1" }, { "from": 567, "to": 571, "label": "SPLIT 2\nreplacements:X106 -> T76,\nT74 -> T77" }, { "from": 570, "to": 482, "label": "INSTANCE with matching:\nT23 -> T75\nX24 -> X106" }, { "from": 571, "to": 633, "label": "CASE" }, { "from": 633, "to": 636, "label": "PARALLEL" }, { "from": 633, "to": 637, "label": "PARALLEL" }, { "from": 636, "to": 641, "label": "EVAL with clause\nmerge([], X114, X114).\nand substitutionT77 -> [],\nT76 -> T84,\nX114 -> T84,\nX107 -> T84" }, { "from": 636, "to": 642, "label": "EVAL-BACKTRACK" }, { "from": 637, "to": 644, "label": "PARALLEL" }, { "from": 637, "to": 645, "label": "PARALLEL" }, { "from": 641, "to": 643, "label": "SUCCESS" }, { "from": 644, "to": 646, "label": "EVAL with clause\nmerge(X119, [], X119).\nand substitutionT77 -> T89,\nX119 -> T89,\nT76 -> [],\nX107 -> T89" }, { "from": 644, "to": 647, "label": "EVAL-BACKTRACK" }, { "from": 645, "to": 653, "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": 645, "to": 654, "label": "EVAL-BACKTRACK" }, { "from": 646, "to": 648, "label": "SUCCESS" }, { "from": 653, "to": 655, "label": "UNIFY CASE with substitutionT102 -> T109,\nT103 -> T109,\nT104 -> T108,\nT107 -> T109,\nT105 -> T110" }, { "from": 653, "to": 656, "label": "UNIFY-BACKTRACK" }, { "from": 655, "to": 571, "label": "INSTANCE with matching:\nT77 -> .(T109, T110)\nT76 -> T108\nX107 -> X137" }, { "from": 657, "to": 482, "label": "INSTANCE with matching:\nT23 -> T54\nX24 -> X25" }, { "from": 658, "to": 659, "label": "CASE" }, { "from": 659, "to": 660, "label": "PARALLEL" }, { "from": 659, "to": 661, "label": "PARALLEL" }, { "from": 660, "to": 662, "label": "EVAL with clause\nmerge([], X146, X146).\nand substitutionT112 -> [],\nT111 -> T119,\nX146 -> T119,\nT19 -> T119" }, { "from": 660, "to": 663, "label": "EVAL-BACKTRACK" }, { "from": 661, "to": 665, "label": "PARALLEL" }, { "from": 661, "to": 666, "label": "PARALLEL" }, { "from": 662, "to": 664, "label": "SUCCESS" }, { "from": 665, "to": 670, "label": "EVAL with clause\nmerge(X151, [], X151).\nand substitutionT112 -> T124,\nX151 -> T124,\nT111 -> [],\nT19 -> T124" }, { "from": 665, "to": 671, "label": "EVAL-BACKTRACK" }, { "from": 666, "to": 681, "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": 666, "to": 683, "label": "EVAL-BACKTRACK" }, { "from": 670, "to": 672, "label": "SUCCESS" }, { "from": 681, "to": 684, "label": "UNIFY CASE with substitutionT135 -> T144,\nT140 -> T144,\nT141 -> T145,\nT142 -> T146" }, { "from": 681, "to": 685, "label": "UNIFY-BACKTRACK" }, { "from": 684, "to": 658, "label": "INSTANCE with matching:\nT112 -> .(T144, T146)\nT111 -> T145\nT19 -> T139" } ], "type": "Graph" } } ---------------------------------------- (137) Complex Obligation (AND) ---------------------------------------- (138) Obligation: Rules: f659_out(T19) -> f658_out(T19) :|: TRUE f658_in(x) -> f659_in(x) :|: TRUE f659_in(x1) -> f661_in(x1) :|: TRUE f661_out(x2) -> f659_out(x2) :|: TRUE f660_out(x3) -> f659_out(x3) :|: TRUE f659_in(x4) -> f660_in(x4) :|: TRUE f683_out -> f666_out(x5) :|: TRUE f681_out(T135, T139) -> f666_out(.(T135, T139)) :|: TRUE f666_in(.(x6, x7)) -> f681_in(x6, x7) :|: TRUE f666_in(x8) -> f683_in :|: TRUE f658_out(x9) -> f684_out(x10, x9) :|: TRUE f684_in(x11, x12) -> f658_in(x12) :|: TRUE f661_in(x13) -> f666_in(x13) :|: TRUE f661_in(x14) -> f665_in(x14) :|: TRUE f665_out(x15) -> f661_out(x15) :|: TRUE f666_out(x16) -> f661_out(x16) :|: TRUE f681_in(x17, x18) -> f685_in :|: TRUE f685_out -> f681_out(x19, x20) :|: TRUE f681_in(x21, x22) -> f684_in(x23, x22) :|: TRUE f684_out(x24, x25) -> f681_out(x26, x25) :|: TRUE f1_in(T2) -> f40_in(T2) :|: TRUE f40_out(x27) -> f1_out(x27) :|: TRUE f41_out(x28) -> f40_out(x28) :|: TRUE f42_out(x29) -> f40_out(x29) :|: TRUE f40_in(x30) -> f42_in(x30) :|: TRUE f40_in(x31) -> f41_in(x31) :|: TRUE f42_in(x32) -> f46_in(x32) :|: TRUE f42_in(x33) -> f47_in(x33) :|: TRUE f47_out(x34) -> f42_out(x34) :|: TRUE f46_out(x35) -> f42_out(x35) :|: TRUE f65_out -> f47_out(x36) :|: TRUE f64_out(x37) -> f47_out(x37) :|: TRUE f47_in(x38) -> f65_in :|: TRUE f47_in(x39) -> f64_in(x39) :|: TRUE f204_out -> f205_in(x40) :|: TRUE f205_out(x41) -> f64_out(x41) :|: TRUE f64_in(x42) -> f204_in :|: TRUE f482_out -> f483_in(x43) :|: TRUE f205_in(x44) -> f482_in :|: TRUE f483_out(x45) -> f205_out(x45) :|: TRUE f658_out(x46) -> f483_out(x46) :|: TRUE f657_out -> f658_in(x47) :|: TRUE f483_in(x48) -> f657_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (139) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (140) TRUE ---------------------------------------- (141) Obligation: Rules: f637_in -> f644_in :|: TRUE f637_in -> f645_in :|: TRUE f644_out -> f637_out :|: TRUE f645_out -> f637_out :|: TRUE f637_out -> f633_out :|: TRUE f633_in -> f636_in :|: TRUE f633_in -> f637_in :|: TRUE f636_out -> f633_out :|: TRUE f571_in -> f633_in :|: TRUE f633_out -> f571_out :|: TRUE f653_out -> f645_out :|: TRUE f654_out -> f645_out :|: TRUE f645_in -> f653_in :|: TRUE f645_in -> f654_in :|: TRUE f656_out -> f653_out :|: TRUE f653_in -> f656_in :|: TRUE f653_in -> f655_in :|: TRUE f655_out -> f653_out :|: TRUE f571_out -> f655_out :|: TRUE f655_in -> f571_in :|: TRUE f1_in(T2) -> f40_in(T2) :|: TRUE f40_out(x) -> f1_out(x) :|: TRUE f41_out(x1) -> f40_out(x1) :|: TRUE f42_out(x2) -> f40_out(x2) :|: TRUE f40_in(x3) -> f42_in(x3) :|: TRUE f40_in(x4) -> f41_in(x4) :|: TRUE f42_in(x5) -> f46_in(x5) :|: TRUE f42_in(x6) -> f47_in(x6) :|: TRUE f47_out(x7) -> f42_out(x7) :|: TRUE f46_out(x8) -> f42_out(x8) :|: TRUE f65_out -> f47_out(x9) :|: TRUE f64_out(T19) -> f47_out(T19) :|: TRUE f47_in(x10) -> f65_in :|: TRUE f47_in(x11) -> f64_in(x11) :|: TRUE f204_out -> f205_in(x12) :|: TRUE f205_out(x13) -> f64_out(x13) :|: TRUE f64_in(x14) -> f204_in :|: TRUE f482_out -> f483_in(x15) :|: TRUE f205_in(x16) -> f482_in :|: TRUE f483_out(x17) -> f205_out(x17) :|: TRUE f482_in -> f484_in :|: TRUE f484_out -> f482_out :|: TRUE f486_out -> f484_out :|: TRUE f484_in -> f486_in :|: TRUE f484_in -> f485_in :|: TRUE f485_out -> f484_out :|: TRUE f492_out -> f486_out :|: TRUE f486_in -> f492_in :|: TRUE f486_in -> f493_in :|: TRUE f493_out -> f486_out :|: TRUE f493_in -> f509_in :|: TRUE f509_out -> f493_out :|: TRUE f508_out -> f493_out :|: TRUE f493_in -> f508_in :|: TRUE f560_out -> f508_out :|: TRUE f508_in -> f556_in :|: TRUE f556_out -> f560_in :|: TRUE f567_out -> f560_out :|: TRUE f560_in -> f566_in :|: TRUE f566_out -> f567_in :|: TRUE f571_out -> f567_out :|: TRUE f567_in -> f570_in :|: TRUE f570_out -> f571_in :|: TRUE f658_out(x18) -> f483_out(x18) :|: TRUE f657_out -> f658_in(x19) :|: TRUE f483_in(x20) -> f657_in :|: TRUE f482_out -> f657_out :|: TRUE f657_in -> f482_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (142) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (143) TRUE ---------------------------------------- (144) Obligation: Rules: f473_in -> f474_in :|: TRUE f474_out -> f473_out :|: TRUE f481_out -> f476_out :|: TRUE f480_out -> f476_out :|: TRUE f476_in -> f481_in :|: TRUE f476_in -> f480_in :|: TRUE f480_in -> f473_in :|: TRUE f473_out -> f480_out :|: TRUE f476_out -> f474_out :|: TRUE f475_out -> f474_out :|: TRUE f474_in -> f476_in :|: TRUE f474_in -> f475_in :|: TRUE f1_in(T2) -> f40_in(T2) :|: TRUE f40_out(x) -> f1_out(x) :|: TRUE f41_out(x1) -> f40_out(x1) :|: TRUE f42_out(x2) -> f40_out(x2) :|: TRUE f40_in(x3) -> f42_in(x3) :|: TRUE f40_in(x4) -> f41_in(x4) :|: TRUE f42_in(x5) -> f46_in(x5) :|: TRUE f42_in(x6) -> f47_in(x6) :|: TRUE f47_out(x7) -> f42_out(x7) :|: TRUE f46_out(x8) -> f42_out(x8) :|: TRUE f65_out -> f47_out(x9) :|: TRUE f64_out(T19) -> f47_out(T19) :|: TRUE f47_in(x10) -> f65_in :|: TRUE f47_in(x11) -> f64_in(x11) :|: TRUE f204_out -> f205_in(x12) :|: TRUE f205_out(x13) -> f64_out(x13) :|: TRUE f64_in(x14) -> f204_in :|: TRUE f482_out -> f483_in(x15) :|: TRUE f205_in(x16) -> f482_in :|: TRUE f483_out(x17) -> f205_out(x17) :|: TRUE f482_in -> f484_in :|: TRUE f484_out -> f482_out :|: TRUE f486_out -> f484_out :|: TRUE f484_in -> f486_in :|: TRUE f484_in -> f485_in :|: TRUE f485_out -> f484_out :|: TRUE f492_out -> f486_out :|: TRUE f486_in -> f492_in :|: TRUE f486_in -> f493_in :|: TRUE f493_out -> f486_out :|: TRUE f493_in -> f509_in :|: TRUE f509_out -> f493_out :|: TRUE f508_out -> f493_out :|: TRUE f493_in -> f508_in :|: TRUE f560_out -> f508_out :|: TRUE f508_in -> f556_in :|: TRUE f556_out -> f560_in :|: TRUE f556_in -> f204_in :|: TRUE f204_out -> f556_out :|: TRUE f313_out -> f204_out :|: TRUE f204_in -> f313_in :|: TRUE f313_in -> f315_in :|: TRUE f315_out -> f313_out :|: TRUE f374_out -> f315_out :|: TRUE f315_in -> f374_in :|: TRUE f378_out -> f374_out :|: TRUE f374_in -> f378_in :|: TRUE f379_out -> f378_out :|: TRUE f378_in -> f379_in :|: TRUE f473_out -> f379_out :|: TRUE f379_in -> f473_in :|: TRUE f658_out(x18) -> f483_out(x18) :|: TRUE f657_out -> f658_in(x19) :|: TRUE f483_in(x20) -> f657_in :|: TRUE f482_out -> f657_out :|: TRUE f657_in -> f482_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (145) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f473_in -> f474_in :|: TRUE f476_in -> f480_in :|: TRUE f480_in -> f473_in :|: TRUE f474_in -> f476_in :|: TRUE ---------------------------------------- (146) Obligation: Rules: f473_in -> f474_in :|: TRUE f476_in -> f480_in :|: TRUE f480_in -> f473_in :|: TRUE f474_in -> f476_in :|: TRUE ---------------------------------------- (147) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (148) Obligation: Rules: f476_in -> f476_in :|: TRUE ---------------------------------------- (149) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (150) Obligation: Rules: f476_in -> f476_in :|: TRUE ---------------------------------------- (151) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f476_in -> f476_in :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (152) Obligation: Termination digraph: Nodes: (1) f476_in -> f476_in :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (153) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f476_in() Replaced non-predefined constructor symbols by 0. ---------------------------------------- (154) Obligation: Rules: f476_in -> f476_in :|: TRUE ---------------------------------------- (155) IntTRSNonPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc) -> f(1) :|: pc = 1 && TRUE Proved unsatisfiability of the following formula, indicating that the system is never left after entering: ((run2_0 = ((1 * 1)) and (((run1_0 * 1)) = ((1 * 1)) and T)) and !(((run2_0 * 1)) = ((1 * 1)) and T)) Proved satisfiability of the following formula, indicating that the system is entered at least once: (run2_0 = ((1 * 1)) and (((run1_0 * 1)) = ((1 * 1)) and T)) ---------------------------------------- (156) NO ---------------------------------------- (157) Obligation: Rules: f493_in -> f509_in :|: TRUE f509_out -> f493_out :|: TRUE f508_out -> f493_out :|: TRUE f493_in -> f508_in :|: TRUE f556_in -> f204_in :|: TRUE f204_out -> f556_out :|: TRUE f646_out -> f644_out :|: TRUE f647_out -> f644_out :|: TRUE f644_in -> f647_in :|: TRUE f644_in -> f646_in :|: TRUE f641_in -> f641_out :|: TRUE f492_out -> f486_out :|: TRUE f486_in -> f492_in :|: TRUE f486_in -> f493_in :|: TRUE f493_out -> f486_out :|: TRUE f486_out -> f484_out :|: TRUE f484_in -> f486_in :|: TRUE f484_in -> f485_in :|: TRUE f485_out -> f484_out :|: TRUE f379_out -> f378_out :|: TRUE f378_in -> f379_in :|: TRUE f473_in -> f474_in :|: TRUE f474_out -> f473_out :|: TRUE f637_in -> f644_in :|: TRUE f637_in -> f645_in :|: TRUE f644_out -> f637_out :|: TRUE f645_out -> f637_out :|: TRUE f378_out -> f374_out :|: TRUE f374_in -> f378_in :|: TRUE f481_out -> f476_out :|: TRUE f480_out -> f476_out :|: TRUE f476_in -> f481_in :|: TRUE f476_in -> f480_in :|: TRUE f482_out -> f570_out :|: TRUE f570_in -> f482_in :|: TRUE f313_out -> f204_out :|: TRUE f204_in -> f313_in :|: TRUE f475_in -> f478_in :|: TRUE f478_out -> f475_out :|: TRUE f477_out -> f475_out :|: TRUE f475_in -> f477_in :|: TRUE f476_out -> f474_out :|: TRUE f475_out -> f474_out :|: TRUE f474_in -> f476_in :|: TRUE f474_in -> f475_in :|: TRUE f560_out -> f508_out :|: TRUE f508_in -> f556_in :|: TRUE f556_out -> f560_in :|: TRUE f473_out -> f379_out :|: TRUE f379_in -> f473_in :|: TRUE f571_in -> f633_in :|: TRUE f633_out -> f571_out :|: TRUE f637_out -> f633_out :|: TRUE f633_in -> f636_in :|: TRUE f633_in -> f637_in :|: TRUE f636_out -> f633_out :|: TRUE f653_out -> f645_out :|: TRUE f654_out -> f645_out :|: TRUE f645_in -> f653_in :|: TRUE f645_in -> f654_in :|: TRUE f480_in -> f473_in :|: TRUE f473_out -> f480_out :|: TRUE f656_out -> f653_out :|: TRUE f653_in -> f656_in :|: TRUE f653_in -> f655_in :|: TRUE f655_out -> f653_out :|: TRUE f641_out -> f636_out :|: TRUE f636_in -> f642_in :|: TRUE f642_out -> f636_out :|: TRUE f636_in -> f641_in :|: TRUE f646_in -> f646_out :|: TRUE f374_out -> f315_out :|: TRUE f315_in -> f374_in :|: TRUE f566_in -> f482_in :|: TRUE f482_out -> f566_out :|: TRUE f313_in -> f315_in :|: TRUE f315_out -> f313_out :|: TRUE f482_in -> f484_in :|: TRUE f484_out -> f482_out :|: TRUE f571_out -> f655_out :|: TRUE f655_in -> f571_in :|: TRUE f477_in -> f477_out :|: TRUE f567_out -> f560_out :|: TRUE f560_in -> f566_in :|: TRUE f566_out -> f567_in :|: TRUE f571_out -> f567_out :|: TRUE f567_in -> f570_in :|: TRUE f570_out -> f571_in :|: TRUE f1_in(T2) -> f40_in(T2) :|: TRUE f40_out(x) -> f1_out(x) :|: TRUE f41_out(x1) -> f40_out(x1) :|: TRUE f42_out(x2) -> f40_out(x2) :|: TRUE f40_in(x3) -> f42_in(x3) :|: TRUE f40_in(x4) -> f41_in(x4) :|: TRUE f42_in(x5) -> f46_in(x5) :|: TRUE f42_in(x6) -> f47_in(x6) :|: TRUE f47_out(x7) -> f42_out(x7) :|: TRUE f46_out(x8) -> f42_out(x8) :|: TRUE f65_out -> f47_out(x9) :|: TRUE f64_out(T19) -> f47_out(T19) :|: TRUE f47_in(x10) -> f65_in :|: TRUE f47_in(x11) -> f64_in(x11) :|: TRUE f204_out -> f205_in(x12) :|: TRUE f205_out(x13) -> f64_out(x13) :|: TRUE f64_in(x14) -> f204_in :|: TRUE f482_out -> f483_in(x15) :|: TRUE f205_in(x16) -> f482_in :|: TRUE f483_out(x17) -> f205_out(x17) :|: TRUE f658_out(x18) -> f483_out(x18) :|: TRUE f657_out -> f658_in(x19) :|: TRUE f483_in(x20) -> f657_in :|: TRUE f482_out -> f657_out :|: TRUE f657_in -> f482_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (158) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f493_in -> f508_in :|: TRUE f556_in -> f204_in :|: TRUE f204_out -> f556_out :|: TRUE f486_in -> f493_in :|: TRUE f484_in -> f486_in :|: TRUE f379_out -> f378_out :|: TRUE f378_in -> f379_in :|: TRUE f473_in -> f474_in :|: TRUE f474_out -> f473_out :|: TRUE f378_out -> f374_out :|: TRUE f374_in -> f378_in :|: TRUE f480_out -> f476_out :|: TRUE f476_in -> f480_in :|: TRUE f313_out -> f204_out :|: TRUE f204_in -> f313_in :|: TRUE f477_out -> f475_out :|: TRUE f475_in -> f477_in :|: TRUE f476_out -> f474_out :|: TRUE f475_out -> f474_out :|: TRUE f474_in -> f476_in :|: TRUE f474_in -> f475_in :|: TRUE f508_in -> f556_in :|: TRUE f556_out -> f560_in :|: TRUE f473_out -> f379_out :|: TRUE f379_in -> f473_in :|: TRUE f480_in -> f473_in :|: TRUE f473_out -> f480_out :|: TRUE f374_out -> f315_out :|: TRUE f315_in -> f374_in :|: TRUE f566_in -> f482_in :|: TRUE f313_in -> f315_in :|: TRUE f315_out -> f313_out :|: TRUE f482_in -> f484_in :|: TRUE f477_in -> f477_out :|: TRUE f560_in -> f566_in :|: TRUE f204_out -> f205_in(x12) :|: TRUE f205_in(x16) -> f482_in :|: TRUE ---------------------------------------- (159) Obligation: Rules: f493_in -> f508_in :|: TRUE f556_in -> f204_in :|: TRUE f204_out -> f556_out :|: TRUE f486_in -> f493_in :|: TRUE f484_in -> f486_in :|: TRUE f379_out -> f378_out :|: TRUE f378_in -> f379_in :|: TRUE f473_in -> f474_in :|: TRUE f474_out -> f473_out :|: TRUE f378_out -> f374_out :|: TRUE f374_in -> f378_in :|: TRUE f480_out -> f476_out :|: TRUE f476_in -> f480_in :|: TRUE f313_out -> f204_out :|: TRUE f204_in -> f313_in :|: TRUE f477_out -> f475_out :|: TRUE f475_in -> f477_in :|: TRUE f476_out -> f474_out :|: TRUE f475_out -> f474_out :|: TRUE f474_in -> f476_in :|: TRUE f474_in -> f475_in :|: TRUE f508_in -> f556_in :|: TRUE f556_out -> f560_in :|: TRUE f473_out -> f379_out :|: TRUE f379_in -> f473_in :|: TRUE f480_in -> f473_in :|: TRUE f473_out -> f480_out :|: TRUE f374_out -> f315_out :|: TRUE f315_in -> f374_in :|: TRUE f566_in -> f482_in :|: TRUE f313_in -> f315_in :|: TRUE f315_out -> f313_out :|: TRUE f482_in -> f484_in :|: TRUE f477_in -> f477_out :|: TRUE f560_in -> f566_in :|: TRUE f204_out -> f205_in(x12) :|: TRUE f205_in(x16) -> f482_in :|: TRUE ---------------------------------------- (160) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (161) Obligation: Rules: f473_in -> f473_in :|: TRUE f474_out -> f473_in :|: TRUE f474_out -> f474_out :|: TRUE f473_in -> f474_out :|: TRUE ---------------------------------------- (162) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (163) Obligation: Rules: f473_in -> f473_in :|: TRUE f474_out -> f473_in :|: TRUE f474_out -> f474_out :|: TRUE f473_in -> f474_out :|: TRUE ---------------------------------------- (164) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f473_in -> f473_in :|: TRUE (2) f474_out -> f473_in :|: TRUE (3) f474_out -> f474_out :|: TRUE (4) f473_in -> f474_out :|: TRUE Arcs: (1) -> (1), (4) (2) -> (1), (4) (3) -> (2), (3) (4) -> (2), (3) This digraph is fully evaluated! ---------------------------------------- (165) Obligation: Termination digraph: Nodes: (1) f473_in -> f473_in :|: TRUE (2) f474_out -> f473_in :|: TRUE (3) f474_out -> f474_out :|: TRUE (4) f473_in -> f474_out :|: TRUE Arcs: (1) -> (1), (4) (2) -> (1), (4) (3) -> (2), (3) (4) -> (2), (3) This digraph is fully evaluated! ---------------------------------------- (166) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f473_in() f474_out() Replaced non-predefined constructor symbols by 0. ---------------------------------------- (167) Obligation: Rules: f473_in -> f473_in :|: TRUE f474_out -> f473_in :|: TRUE f474_out -> f474_out :|: TRUE f473_in -> f474_out :|: TRUE ---------------------------------------- (168) 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) ---------------------------------------- (169) NO ---------------------------------------- (170) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 51, "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": { "type": "Nodes", "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": [] } }, "751": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "510": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "752": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "511": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T47 X13) (merge T46 X13 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X13"], "exprvars": [] } }, "753": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "512": { "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": [] } }, "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": [] } }, "513": { "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": [] } }, "755": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "514": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "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": [] } }, "515": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "757": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "516": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [] } }, "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": [] } }, "518": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "519": { "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": [] } }, "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": [] } }, "520": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "762": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "521": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T62 (. T63 T64)) X91 X92)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X91", "X92" ], "exprvars": [] } }, "763": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "401": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "522": { "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": [] } }, "764": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [] } }, "766": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [] } }, "405": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "768": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "409": { "goal": [], "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": [] } }, "772": { "goal": [{ "clause": 6, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "773": { "goal": [{ "clause": 7, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "774": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "775": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "776": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "777": { "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": [] } }, "778": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "779": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T348 T350) T349 T343)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T343", "T348" ], "free": [], "exprvars": [] } }, "418": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X67 X66)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X66", "X67" ], "exprvars": [] } }, "780": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "300": { "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": [] } }, "421": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "302": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T25 T26) X31 X30)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "667": { "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": [] } }, "668": { "goal": [{ "clause": 5, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "669": { "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": [] } }, "704": { "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": [] } }, "705": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 (. T140 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T140"], "free": [], "exprvars": [] } }, "706": { "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": [] } }, "707": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "708": { "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": [] } }, "709": { "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": [] } }, "391": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "153": { "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": [] } }, "396": { "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": [] } }, "551": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "552": { "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": [] } }, "673": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "399": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "553": { "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": [] } }, "674": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "554": { "goal": [{ "clause": 0, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "675": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "555": { "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": [] } }, "676": { "goal": [{ "clause": 6, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "677": { "goal": [{ "clause": 7, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "710": { "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": [] } }, "557": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "678": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "711": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T164 T165) X204 X203)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X203", "X204" ], "exprvars": [] } }, "558": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "679": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "712": { "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": [] } }, "559": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "713": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T169 T168) X185)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X185"], "exprvars": [] } }, "714": { "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": [] } }, "715": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T171 X186)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X186"], "exprvars": [] } }, "51": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "716": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "52": { "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": [] } }, "717": { "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": [] } }, "53": { "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": [] } }, "718": { "goal": [{ "clause": 5, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "54": { "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": [] } }, "719": { "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": [] } }, "55": { "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": [] } }, "162": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "680": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "561": { "goal": [{ "clause": 1, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "682": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "166": { "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": [] } }, "562": { "goal": [{ "clause": 2, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "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": [] } }, "686": { "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": [] } }, "203": { "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": [] } }, "720": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "721": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "568": { "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": [] } }, "722": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "569": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "602": { "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": [] } }, "723": { "goal": [{ "clause": 6, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "724": { "goal": [{ "clause": 7, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "725": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "726": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "727": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "728": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T206 T210) (merge (. T206 T212) T211 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T206"], "free": [], "exprvars": [] } }, "729": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "609": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "171": { "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": [] } }, "297": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T25 T26) X31 X30)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "572": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T68 X94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X94"], "exprvars": [] } }, "298": { "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": [] } }, "573": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "730": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T214 T216) T215 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T214"], "free": [], "exprvars": [] } }, "610": { "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": [] } }, "731": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "611": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "732": { "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": [] } }, "612": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "733": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "613": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "734": { "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": [] } }, "614": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "735": { "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": [] } }, "615": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "736": { "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": [] } }, "616": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "737": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T240 T241) X263 X262)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X262", "X263" ], "exprvars": [] } }, "617": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "738": { "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": [] } }, "618": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "739": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T245 T244) X244)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X244"], "exprvars": [] } }, "75": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "619": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T112 T113) (merge (. T112 T115) T114 X153))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X153"], "exprvars": [] } }, "740": { "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": [] } }, "620": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "741": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T248 X245)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X245"], "exprvars": [] } }, "621": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T119 T120) T118 X153)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X153"], "exprvars": [] } }, "742": { "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": [] } }, "622": { "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": [{ "clause": -1, "scope": -1, "term": "(mergesort T47 X13)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X13"], "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": [] } }, "624": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [] } }, "746": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "747": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "748": { "goal": [], "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": [] } } }, "edges": [ { "from": 51, "to": 52, "label": "CASE" }, { "from": 52, "to": 53, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 52, "to": 54, "label": "EVAL-BACKTRACK" }, { "from": 53, "to": 55, "label": "SUCCESS" }, { "from": 54, "to": 686, "label": "EVAL with clause\nmergesort(.(X174, []), .(X174, [])).\nand substitutionX174 -> T140,\nT1 -> .(T140, []),\nT2 -> .(T140, [])" }, { "from": 54, "to": 704, "label": "EVAL-BACKTRACK" }, { "from": 55, "to": 75, "label": "BACKTRACK\nfor clause: mergesort(.(X, []), .(X, []))because of non-unification" }, { "from": 75, "to": 153, "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": 75, "to": 162, "label": "EVAL-BACKTRACK" }, { "from": 153, "to": 166, "label": "CASE" }, { "from": 166, "to": 171, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 171, "to": 203, "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": 203, "to": 297, "label": "SPLIT 1" }, { "from": 203, "to": 298, "label": "SPLIT 2\nreplacements:X31 -> T28,\nX30 -> T29,\nT27 -> T30" }, { "from": 297, "to": 300, "label": "CASE" }, { "from": 298, "to": 510, "label": "SPLIT 1" }, { "from": 298, "to": 511, "label": "SPLIT 2\nreplacements:X12 -> T46,\nT28 -> T47" }, { "from": 300, "to": 302, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 302, "to": 391, "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": 391, "to": 396, "label": "CASE" }, { "from": 396, "to": 399, "label": "PARALLEL" }, { "from": 396, "to": 401, "label": "PARALLEL" }, { "from": 399, "to": 405, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT38 -> [],\nX49 -> [],\nX48 -> []" }, { "from": 399, "to": 407, "label": "EVAL-BACKTRACK" }, { "from": 401, "to": 418, "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": 401, "to": 421, "label": "EVAL-BACKTRACK" }, { "from": 405, "to": 409, "label": "SUCCESS" }, { "from": 418, "to": 391, "label": "INSTANCE with matching:\nT38 -> T45\nX49 -> X67\nX48 -> X66" }, { "from": 510, "to": 512, "label": "CASE" }, { "from": 511, "to": 623, "label": "SPLIT 1" }, { "from": 511, "to": 624, "label": "SPLIT 2\nreplacements:X13 -> T121,\nT46 -> T122" }, { "from": 512, "to": 513, "label": "BACKTRACK\nfor clause: mergesort([], [])because of non-unification" }, { "from": 513, "to": 514, "label": "PARALLEL" }, { "from": 513, "to": 515, "label": "PARALLEL" }, { "from": 514, "to": 516, "label": "EVAL with clause\nmergesort(.(X72, []), .(X72, [])).\nand substitutionT30 -> T52,\nX72 -> T52,\nT29 -> [],\nX12 -> .(T52, [])" }, { "from": 514, "to": 517, "label": "EVAL-BACKTRACK" }, { "from": 515, "to": 519, "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": 515, "to": 520, "label": "EVAL-BACKTRACK" }, { "from": 516, "to": 518, "label": "SUCCESS" }, { "from": 519, "to": 521, "label": "SPLIT 1" }, { "from": 519, "to": 522, "label": "SPLIT 2\nreplacements:X91 -> T65,\nX92 -> T66" }, { "from": 521, "to": 297, "label": "INSTANCE with matching:\nT25 -> T62\nT26 -> .(T63, T64)\nX31 -> X91\nX30 -> X92" }, { "from": 522, "to": 551, "label": "SPLIT 1" }, { "from": 522, "to": 552, "label": "SPLIT 2\nreplacements:X93 -> T67,\nT66 -> T68" }, { "from": 551, "to": 553, "label": "CASE" }, { "from": 552, "to": 572, "label": "SPLIT 1" }, { "from": 552, "to": 573, "label": "SPLIT 2\nreplacements:X94 -> T86,\nT67 -> T87" }, { "from": 553, "to": 554, "label": "PARALLEL" }, { "from": 553, "to": 555, "label": "PARALLEL" }, { "from": 554, "to": 557, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT65 -> [],\nX93 -> []" }, { "from": 554, "to": 558, "label": "EVAL-BACKTRACK" }, { "from": 555, "to": 561, "label": "PARALLEL" }, { "from": 555, "to": 562, "label": "PARALLEL" }, { "from": 557, "to": 559, "label": "SUCCESS" }, { "from": 561, "to": 563, "label": "EVAL with clause\nmergesort(.(X100, []), .(X100, [])).\nand substitutionX100 -> T73,\nT65 -> .(T73, []),\nX93 -> .(T73, [])" }, { "from": 561, "to": 564, "label": "EVAL-BACKTRACK" }, { "from": 562, "to": 568, "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": 562, "to": 569, "label": "EVAL-BACKTRACK" }, { "from": 563, "to": 565, "label": "SUCCESS" }, { "from": 568, "to": 519, "label": "INSTANCE with matching:\nT62 -> T83\nT63 -> T84\nT64 -> T85\nX91 -> X119\nX92 -> X120\nX93 -> X121\nX94 -> X122\nX95 -> X123" }, { "from": 572, "to": 551, "label": "INSTANCE with matching:\nT65 -> T68\nX93 -> X94" }, { "from": 573, "to": 602, "label": "CASE" }, { "from": 602, "to": 609, "label": "PARALLEL" }, { "from": 602, "to": 610, "label": "PARALLEL" }, { "from": 609, "to": 611, "label": "EVAL with clause\nmerge([], X130, X130).\nand substitutionT87 -> [],\nT86 -> T94,\nX130 -> T94,\nX95 -> T94" }, { "from": 609, "to": 612, "label": "EVAL-BACKTRACK" }, { "from": 610, "to": 614, "label": "PARALLEL" }, { "from": 610, "to": 615, "label": "PARALLEL" }, { "from": 611, "to": 613, "label": "SUCCESS" }, { "from": 614, "to": 616, "label": "EVAL with clause\nmerge(X135, [], X135).\nand substitutionT87 -> T99,\nX135 -> T99,\nT86 -> [],\nX95 -> T99" }, { "from": 614, "to": 617, "label": "EVAL-BACKTRACK" }, { "from": 615, "to": 619, "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": 615, "to": 620, "label": "EVAL-BACKTRACK" }, { "from": 616, "to": 618, "label": "SUCCESS" }, { "from": 619, "to": 621, "label": "UNIFY CASE with substitutionT112 -> T119,\nT113 -> T119,\nT114 -> T118,\nT117 -> T119,\nT115 -> T120" }, { "from": 619, "to": 622, "label": "UNIFY-BACKTRACK" }, { "from": 621, "to": 573, "label": "INSTANCE with matching:\nT87 -> .(T119, T120)\nT86 -> T118\nX95 -> X153" }, { "from": 623, "to": 551, "label": "INSTANCE with matching:\nT65 -> T47\nX93 -> X13" }, { "from": 624, "to": 667, "label": "CASE" }, { "from": 667, "to": 668, "label": "PARALLEL" }, { "from": 667, "to": 669, "label": "PARALLEL" }, { "from": 668, "to": 673, "label": "EVAL with clause\nmerge([], X162, X162).\nand substitutionT122 -> [],\nT121 -> [],\nX162 -> [],\nT129 -> []" }, { "from": 668, "to": 674, "label": "EVAL-BACKTRACK" }, { "from": 669, "to": 676, "label": "PARALLEL" }, { "from": 669, "to": 677, "label": "PARALLEL" }, { "from": 673, "to": 675, "label": "SUCCESS" }, { "from": 676, "to": 678, "label": "EVAL with clause\nmerge(X167, [], X167).\nand substitutionT122 -> [],\nX167 -> [],\nT121 -> [],\nT134 -> []" }, { "from": 676, "to": 679, "label": "EVAL-BACKTRACK" }, { "from": 677, "to": 682, "label": "BACKTRACK\nfor clause: merge(.(X, Xs), .(Y, Ys), .(X, Zs)) :- ','(=(X, Y), merge(.(X, Xs), Ys, Zs))because of non-unification" }, { "from": 678, "to": 680, "label": "SUCCESS" }, { "from": 686, "to": 705, "label": "SUCCESS" }, { "from": 704, "to": 732, "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": 704, "to": 733, "label": "EVAL-BACKTRACK" }, { "from": 705, "to": 706, "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": 705, "to": 707, "label": "EVAL-BACKTRACK" }, { "from": 706, "to": 708, "label": "CASE" }, { "from": 708, "to": 709, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 709, "to": 710, "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": 710, "to": 711, "label": "SPLIT 1" }, { "from": 710, "to": 712, "label": "SPLIT 2\nreplacements:X204 -> T167,\nX203 -> T168,\nT166 -> T169" }, { "from": 711, "to": 297, "label": "INSTANCE with matching:\nT25 -> T164\nT26 -> T165\nX31 -> X204\nX30 -> X203" }, { "from": 712, "to": 713, "label": "SPLIT 1" }, { "from": 712, "to": 714, "label": "SPLIT 2\nreplacements:X185 -> T170,\nT167 -> T171" }, { "from": 713, "to": 510, "label": "INSTANCE with matching:\nT30 -> T169\nT29 -> T168\nX12 -> X185" }, { "from": 714, "to": 715, "label": "SPLIT 1" }, { "from": 714, "to": 716, "label": "SPLIT 2\nreplacements:X186 -> T172,\nT170 -> T173" }, { "from": 715, "to": 551, "label": "INSTANCE with matching:\nT65 -> T171\nX93 -> X186" }, { "from": 716, "to": 717, "label": "CASE" }, { "from": 717, "to": 718, "label": "PARALLEL" }, { "from": 717, "to": 719, "label": "PARALLEL" }, { "from": 718, "to": 720, "label": "EVAL with clause\nmerge([], X211, X211).\nand substitutionT173 -> [],\nT172 -> .(T187, []),\nX211 -> .(T187, []),\nT148 -> T187,\nT186 -> .(T187, [])" }, { "from": 718, "to": 721, "label": "EVAL-BACKTRACK" }, { "from": 719, "to": 723, "label": "PARALLEL" }, { "from": 719, "to": 724, "label": "PARALLEL" }, { "from": 720, "to": 722, "label": "SUCCESS" }, { "from": 723, "to": 725, "label": "EVAL with clause\nmerge(X216, [], X216).\nand substitutionT173 -> .(T197, []),\nX216 -> .(T197, []),\nT172 -> [],\nT148 -> T197,\nT196 -> .(T197, [])" }, { "from": 723, "to": 726, "label": "EVAL-BACKTRACK" }, { "from": 724, "to": 728, "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": 724, "to": 729, "label": "EVAL-BACKTRACK" }, { "from": 725, "to": 727, "label": "SUCCESS" }, { "from": 728, "to": 730, "label": "UNIFY CASE with substitutionT206 -> T214,\nT210 -> T214,\nT211 -> T215,\nT212 -> T216" }, { "from": 728, "to": 731, "label": "UNIFY-BACKTRACK" }, { "from": 730, "to": 624, "label": "INSTANCE with matching:\nT122 -> .(T214, T216)\nT121 -> T215" }, { "from": 732, "to": 734, "label": "CASE" }, { "from": 734, "to": 735, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 735, "to": 736, "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": 736, "to": 737, "label": "SPLIT 1" }, { "from": 736, "to": 738, "label": "SPLIT 2\nreplacements:X263 -> T243,\nX262 -> T244,\nT242 -> T245,\nT1 -> T246" }, { "from": 737, "to": 297, "label": "INSTANCE with matching:\nT25 -> T240\nT26 -> T241\nX31 -> X263\nX30 -> X262" }, { "from": 738, "to": 739, "label": "SPLIT 1" }, { "from": 738, "to": 740, "label": "SPLIT 2\nreplacements:X244 -> T247,\nT243 -> T248,\nT246 -> T249" }, { "from": 739, "to": 510, "label": "INSTANCE with matching:\nT30 -> T245\nT29 -> T244\nX12 -> X244" }, { "from": 740, "to": 741, "label": "SPLIT 1" }, { "from": 740, "to": 742, "label": "SPLIT 2\nreplacements:X245 -> T250,\nT247 -> T251,\nT249 -> T252" }, { "from": 741, "to": 551, "label": "INSTANCE with matching:\nT65 -> T248\nX93 -> X245" }, { "from": 742, "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": 772, "label": "PARALLEL" }, { "from": 770, "to": 773, "label": "PARALLEL" }, { "from": 772, "to": 774, "label": "EVAL with clause\nmerge(X321, [], X321).\nand substitutionT316 -> T327,\nT318 -> T328,\nX321 -> .(T327, T328),\nT317 -> [],\nT311 -> .(T327, T328)" }, { "from": 772, "to": 775, "label": "EVAL-BACKTRACK" }, { "from": 773, "to": 777, "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": 773, "to": 778, "label": "EVAL-BACKTRACK" }, { "from": 774, "to": 776, "label": "SUCCESS" }, { "from": 777, "to": 779, "label": "UNIFY CASE with substitutionT339 -> T348,\nT344 -> T348,\nT345 -> T349,\nT346 -> T350" }, { "from": 777, "to": 780, "label": "UNIFY-BACKTRACK" }, { "from": 779, "to": 767, "label": "INSTANCE with matching:\nT316 -> T348\nT318 -> T350\nT317 -> T349\nT311 -> T343" } ], "type": "Graph" } } ---------------------------------------- (171) 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) ---------------------------------------- (172) UndefinedPredicateInTriplesTransformerProof (SOUND) Deleted triples and predicates having undefined goals [DT09]. ---------------------------------------- (173) 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) ---------------------------------------- (174) 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 ---------------------------------------- (175) 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 ---------------------------------------- (176) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 47 less nodes. ---------------------------------------- (177) Complex Obligation (AND) ---------------------------------------- (178) 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 ---------------------------------------- (179) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (180) 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 ---------------------------------------- (181) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (182) 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. ---------------------------------------- (183) 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 ---------------------------------------- (184) YES ---------------------------------------- (185) 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 ---------------------------------------- (186) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (187) 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 ---------------------------------------- (188) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (189) 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. ---------------------------------------- (190) 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 ---------------------------------------- (191) YES ---------------------------------------- (192) 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 ---------------------------------------- (193) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (194) 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 ---------------------------------------- (195) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (196) 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. ---------------------------------------- (197) 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 ---------------------------------------- (198) YES ---------------------------------------- (199) 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 ---------------------------------------- (200) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (201) 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 ---------------------------------------- (202) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (203) 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. ---------------------------------------- (204) 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))))) ---------------------------------------- (205) 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. ---------------------------------------- (206) 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))))) ---------------------------------------- (207) 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. ---------------------------------------- (208) 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 ---------------------------------------- (209) 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. ---------------------------------------- (210) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes. ---------------------------------------- (211) TRUE ---------------------------------------- (212) 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 ---------------------------------------- (213) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (214) 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 ---------------------------------------- (215) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (216) 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. ---------------------------------------- (217) 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. ---------------------------------------- (218) NO