/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.pl /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 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, 8 ms] (6) PiDP (7) DependencyGraphProof [EQUIVALENT, 0 ms] (8) AND (9) PiDP (10) UsableRulesProof [EQUIVALENT, 0 ms] (11) PiDP (12) PiDPToQDPProof [SOUND, 1 ms] (13) QDP (14) QDPSizeChangeProof [EQUIVALENT, 0 ms] (15) YES (16) PiDP (17) UsableRulesProof [EQUIVALENT, 0 ms] (18) PiDP (19) PiDPToQDPProof [SOUND, 0 ms] (20) QDP (21) QDPSizeChangeProof [EQUIVALENT, 0 ms] (22) YES (23) PiDP (24) UsableRulesProof [EQUIVALENT, 0 ms] (25) PiDP (26) PiDPToQDPProof [SOUND, 0 ms] (27) QDP (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] (29) YES (30) PiDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) PiDP (33) PiDPToQDPProof [SOUND, 0 ms] (34) QDP (35) MRRProof [EQUIVALENT, 15 ms] (36) QDP (37) TransformationProof [EQUIVALENT, 0 ms] (38) QDP (39) TransformationProof [EQUIVALENT, 0 ms] (40) QDP (41) QDPOrderProof [EQUIVALENT, 53 ms] (42) QDP (43) QDPQMonotonicMRRProof [EQUIVALENT, 92 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) QDPOrderProof [EQUIVALENT, 0 ms] (52) QDP (53) QDPQMonotonicMRRProof [EQUIVALENT, 0 ms] (54) QDP (55) UsableRulesProof [EQUIVALENT, 0 ms] (56) QDP (57) QReductionProof [EQUIVALENT, 0 ms] (58) QDP (59) PiDP (60) UsableRulesProof [EQUIVALENT, 0 ms] (61) PiDP (62) PrologToPiTRSProof [SOUND, 0 ms] (63) PiTRS (64) DependencyPairsProof [EQUIVALENT, 5 ms] (65) PiDP (66) DependencyGraphProof [EQUIVALENT, 0 ms] (67) AND (68) PiDP (69) UsableRulesProof [EQUIVALENT, 0 ms] (70) PiDP (71) PiDPToQDPProof [SOUND, 10 ms] (72) QDP (73) QDPSizeChangeProof [EQUIVALENT, 0 ms] (74) YES (75) PiDP (76) UsableRulesProof [EQUIVALENT, 0 ms] (77) PiDP (78) PiDPToQDPProof [SOUND, 0 ms] (79) QDP (80) QDPSizeChangeProof [EQUIVALENT, 0 ms] (81) YES (82) PiDP (83) UsableRulesProof [EQUIVALENT, 0 ms] (84) PiDP (85) PiDPToQDPProof [SOUND, 0 ms] (86) QDP (87) QDPSizeChangeProof [EQUIVALENT, 0 ms] (88) YES (89) PiDP (90) UsableRulesProof [EQUIVALENT, 0 ms] (91) PiDP (92) PiDPToQDPProof [SOUND, 0 ms] (93) QDP (94) TransformationProof [EQUIVALENT, 0 ms] (95) QDP (96) TransformationProof [EQUIVALENT, 0 ms] (97) QDP (98) QDPQMonotonicMRRProof [EQUIVALENT, 82 ms] (99) QDP (100) QDPQMonotonicMRRProof [EQUIVALENT, 3 ms] (101) QDP (102) DependencyGraphProof [EQUIVALENT, 0 ms] (103) QDP (104) UsableRulesProof [EQUIVALENT, 0 ms] (105) QDP (106) QReductionProof [EQUIVALENT, 0 ms] (107) QDP (108) PiDP (109) UsableRulesProof [EQUIVALENT, 0 ms] (110) PiDP (111) PrologToTRSTransformerProof [SOUND, 43 ms] (112) QTRS (113) QTRSRRRProof [EQUIVALENT, 259 ms] (114) QTRS (115) DependencyPairsProof [EQUIVALENT, 0 ms] (116) QDP (117) DependencyGraphProof [EQUIVALENT, 0 ms] (118) AND (119) QDP (120) UsableRulesProof [EQUIVALENT, 0 ms] (121) QDP (122) NonTerminationLoopProof [COMPLETE, 0 ms] (123) NO (124) QDP (125) UsableRulesProof [EQUIVALENT, 0 ms] (126) QDP (127) NonTerminationLoopProof [COMPLETE, 0 ms] (128) NO (129) QDP (130) PrologToIRSwTTransformerProof [SOUND, 46 ms] (131) AND (132) IRSwT (133) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (134) TRUE (135) IRSwT (136) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (137) TRUE (138) IRSwT (139) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (140) IRSwT (141) IntTRSCompressionProof [EQUIVALENT, 18 ms] (142) IRSwT (143) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (144) IRSwT (145) IRSwTTerminationDigraphProof [EQUIVALENT, 7 ms] (146) IRSwT (147) FilterProof [EQUIVALENT, 0 ms] (148) IntTRS (149) IntTRSNonPeriodicNontermProof [COMPLETE, 6 ms] (150) NO (151) IRSwT (152) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (153) IRSwT (154) IntTRSCompressionProof [EQUIVALENT, 9 ms] (155) IRSwT (156) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (157) IRSwT (158) IRSwTTerminationDigraphProof [EQUIVALENT, 11 ms] (159) IRSwT (160) FilterProof [EQUIVALENT, 0 ms] (161) IntTRS (162) IntTRSPeriodicNontermProof [COMPLETE, 8 ms] (163) NO (164) PrologToDTProblemTransformerProof [SOUND, 44 ms] (165) TRIPLES (166) UndefinedPredicateInTriplesTransformerProof [SOUND, 0 ms] (167) TRIPLES (168) TriplesToPiDPProof [SOUND, 74 ms] (169) PiDP (170) DependencyGraphProof [EQUIVALENT, 0 ms] (171) AND (172) PiDP (173) UsableRulesProof [EQUIVALENT, 0 ms] (174) PiDP (175) PiDPToQDPProof [SOUND, 0 ms] (176) QDP (177) QDPSizeChangeProof [EQUIVALENT, 0 ms] (178) YES (179) PiDP (180) UsableRulesProof [EQUIVALENT, 0 ms] (181) PiDP (182) PiDPToQDPProof [SOUND, 0 ms] (183) QDP (184) QDPSizeChangeProof [EQUIVALENT, 0 ms] (185) YES (186) PiDP (187) UsableRulesProof [EQUIVALENT, 0 ms] (188) PiDP (189) PiDPToQDPProof [SOUND, 0 ms] (190) QDP (191) QDPSizeChangeProof [EQUIVALENT, 0 ms] (192) YES (193) PiDP (194) UsableRulesProof [EQUIVALENT, 0 ms] (195) PiDP (196) PiDPToQDPProof [SOUND, 0 ms] (197) QDP (198) TransformationProof [EQUIVALENT, 0 ms] (199) QDP (200) TransformationProof [EQUIVALENT, 0 ms] (201) QDP (202) QDPQMonotonicMRRProof [EQUIVALENT, 183 ms] (203) QDP (204) DependencyGraphProof [EQUIVALENT, 0 ms] (205) TRUE (206) PiDP (207) UsableRulesProof [EQUIVALENT, 0 ms] (208) PiDP (209) PiDPToQDPProof [SOUND, 0 ms] (210) QDP ---------------------------------------- (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) .(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 ---------------------------------------- (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) .(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) ---------------------------------------- (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) .(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 ---------------------------------------- (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) .(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 ---------------------------------------- (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) .(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 ---------------------------------------- (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) .(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 ---------------------------------------- (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) .(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 ---------------------------------------- (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) .(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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. ---------------------------------------- (35) 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 ---------------------------------------- (36) 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. ---------------------------------------- (37) 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))))) ---------------------------------------- (38) 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. ---------------------------------------- (39) 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))))) ---------------------------------------- (40) 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. ---------------------------------------- (41) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U2_GA_2(x_1, x_2) ) = max{0, 2x_2 - 1} POL( mergesort_in_ga_1(x_1) ) = x_1 POL( [] ) = 2 POL( mergesort_out_ga_1(x_1) ) = 1 POL( ._1(x_1) ) = 0 POL( U1_ga_1(x_1) ) = x_1 POL( split_in_gaa_1(x_1) ) = max{0, -2} POL( U1_GA_1(x_1) ) = x_1 + 1 POL( U5_gaa_1(x_1) ) = max{0, -2} POL( split_out_gaa_2(x_1, x_2) ) = 2x_1 POL( U2_ga_2(x_1, x_2) ) = 2x_2 POL( U3_ga_2(x_1, x_2) ) = 2 POL( U4_ga_1(x_1) ) = 1 POL( merge_in_gga_2(x_1, x_2) ) = max{0, -2} POL( merge_out_gga_1(x_1) ) = max{0, -2} POL( U6_gga_3(x_1, ..., x_3) ) = max{0, -2} POL( =_in_aa ) = 0 POL( =_out_aa ) = 0 POL( U7_gga_1(x_1) ) = 2 POL( MERGESORT_IN_GA_1(x_1) ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: 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. ---------------------------------------- (43) 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 ---------------------------------------- (44) 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. ---------------------------------------- (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(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. ---------------------------------------- (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]. U6_gga(x0, x1, x2) =_in_aa U7_gga(x0) ---------------------------------------- (48) 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. ---------------------------------------- (49) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U2_GA_2(x_1, x_2) ) = x_2 POL( mergesort_in_ga_1(x_1) ) = 2x_1 POL( [] ) = 1 POL( mergesort_out_ga_1(x_1) ) = 2 POL( ._1(x_1) ) = 0 POL( U1_ga_1(x_1) ) = 2x_1 POL( split_in_gaa_1(x_1) ) = max{0, -2} POL( U1_GA_1(x_1) ) = 2x_1 POL( U5_gaa_1(x_1) ) = 0 POL( split_out_gaa_2(x_1, x_2) ) = x_1 POL( U2_ga_2(x_1, x_2) ) = x_2 POL( U3_ga_2(x_1, x_2) ) = 2 POL( U4_ga_1(x_1) ) = max{0, 2x_1 - 2} POL( merge_in_gga_2(x_1, x_2) ) = 2 POL( merge_out_gga_1(x_1) ) = 2 POL( MERGESORT_IN_GA_1(x_1) ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (51) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U2_GA(X2s, mergesort_out_ga(Y1s)) -> MERGESORT_IN_GA(X2s) The remaining pairs can at least be oriented weakly. Used ordering: Combined order from the following AFS and order. U1_GA(x1) = x1 split_out_gaa(x1, x2) = x1 U2_GA(x1, x2) = x2 mergesort_in_ga(x1) = x1 mergesort_out_ga(x1) = mergesort_out_ga MERGESORT_IN_GA(x1) = MERGESORT_IN_GA .(x1) = . U5_gaa(x1) = U5_gaa split_in_gaa(x1) = split_in_gaa [] = [] U1_ga(x1) = x1 U2_ga(x1, x2) = x2 U3_ga(x1, x2) = U3_ga U4_ga(x1) = U4_ga merge_in_gga(x1, x2) = merge_in_gga merge_out_gga(x1) = merge_out_gga Recursive path order with status [RPO]. Quasi-Precedence: [] > [mergesort_out_ga, U3_ga, U4_ga] > merge_in_gga > [MERGESORT_IN_GA, ., U5_gaa, split_in_gaa] merge_out_gga > [mergesort_out_ga, U3_ga, U4_ga] > merge_in_gga > [MERGESORT_IN_GA, ., U5_gaa, split_in_gaa] Status: mergesort_out_ga: [] MERGESORT_IN_GA: multiset status .: multiset status U5_gaa: multiset status split_in_gaa: multiset status []: multiset status U3_ga: [] U4_ga: [] merge_in_gga: multiset status merge_out_gga: multiset status The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: U1_GA(split_out_gaa(X1s, X2s)) -> U2_GA(X2s, mergesort_in_ga(X1s)) U1_GA(split_out_gaa(X1s, X2s)) -> MERGESORT_IN_GA(X1s) MERGESORT_IN_GA(.(.(Xs))) -> U1_GA(U5_gaa(U5_gaa(split_in_gaa(Xs)))) The TRS R consists of the following rules: split_in_gaa(.(Xs)) -> U5_gaa(split_in_gaa(Xs)) split_in_gaa([]) -> split_out_gaa([], []) U5_gaa(split_out_gaa(Zs, Ys)) -> split_out_gaa(.(Ys), Zs) mergesort_in_ga([]) -> mergesort_out_ga([]) mergesort_in_ga(.(.(Xs))) -> U1_ga(split_in_gaa(.(.(Xs)))) U1_ga(split_out_gaa(X1s, X2s)) -> U2_ga(X2s, mergesort_in_ga(X1s)) U2_ga(X2s, mergesort_out_ga(Y1s)) -> U3_ga(Y1s, mergesort_in_ga(X2s)) U3_ga(Y1s, mergesort_out_ga(Y2s)) -> U4_ga(merge_in_gga(Y1s, Y2s)) merge_in_gga([], Xs) -> merge_out_gga(Xs) merge_in_gga(Xs, []) -> merge_out_gga(Xs) U4_ga(merge_out_gga(Ys)) -> mergesort_out_ga(Ys) The set Q consists of the following terms: mergesort_in_ga(x0) split_in_gaa(x0) U1_ga(x0) U5_gaa(x0) U2_ga(x0, x1) U3_ga(x0, x1) U4_ga(x0) merge_in_gga(x0, x1) We have to consider all (P,Q,R)-chains. ---------------------------------------- (53) 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 ---------------------------------------- (54) 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. ---------------------------------------- (55) 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. ---------------------------------------- (56) 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. ---------------------------------------- (57) 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) ---------------------------------------- (58) 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. ---------------------------------------- (59) 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 ---------------------------------------- (60) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (61) 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 ---------------------------------------- (62) 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 ---------------------------------------- (63) 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) ---------------------------------------- (64) 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 ---------------------------------------- (65) 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 ---------------------------------------- (66) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 18 less nodes. ---------------------------------------- (67) Complex Obligation (AND) ---------------------------------------- (68) 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 ---------------------------------------- (69) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (70) 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 ---------------------------------------- (71) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (72) 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. ---------------------------------------- (73) 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 ---------------------------------------- (74) YES ---------------------------------------- (75) 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 ---------------------------------------- (76) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (77) 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 ---------------------------------------- (78) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (79) 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. ---------------------------------------- (80) 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 ---------------------------------------- (81) YES ---------------------------------------- (82) 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 ---------------------------------------- (83) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (84) 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 ---------------------------------------- (85) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (86) 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. ---------------------------------------- (87) 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 ---------------------------------------- (88) YES ---------------------------------------- (89) 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 ---------------------------------------- (90) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (91) 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 ---------------------------------------- (92) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (93) 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. ---------------------------------------- (94) 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))))) ---------------------------------------- (95) 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. ---------------------------------------- (96) 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))))) ---------------------------------------- (97) 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. ---------------------------------------- (98) 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 ---------------------------------------- (99) 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. ---------------------------------------- (100) 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 ---------------------------------------- (101) 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. ---------------------------------------- (102) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (103) 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. ---------------------------------------- (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(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. ---------------------------------------- (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, 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) ---------------------------------------- (107) 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. ---------------------------------------- (108) 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 ---------------------------------------- (109) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (110) Obligation: Pi DP problem: The TRS P consists of the following rules: SPLIT_IN_AAA(.(X, Xs), .(X, Ys), Zs) -> SPLIT_IN_AAA(Xs, Zs, Ys) 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 ---------------------------------------- (111) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 11, "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": { "270": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "590": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "591": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "471": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "592": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "472": { "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": [] } }, "593": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "473": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "594": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "199": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "353": { "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": [] } }, "474": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "475": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "355": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "476": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "553": { "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": [] } }, "597": { "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": [] } }, "279": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "477": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "554": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "598": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "478": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T52 X79 X78)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X78", "X79" ], "exprvars": [] } }, "479": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "559": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T69 (. T70 T71)) X103 X104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X103", "X104" ], "exprvars": [] } }, "439": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "11": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "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": [] } }, "440": { "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": [] } }, "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": [] } }, "561": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T72 X105)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X105"], "exprvars": [] } }, "441": { "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": [] } }, "485": { "goal": [{ "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "562": { "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": [] } }, "442": { "goal": [{ "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "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": [] } }, "563": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T75 X106)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X106"], "exprvars": [] } }, "487": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "564": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "202": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "488": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "565": { "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": [] } }, "566": { "goal": [{ "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "567": { "goal": [ { "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }, { "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "600": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T144 T146) T145 T139)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T139", "T144" ], "free": [], "exprvars": [] } }, "568": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "601": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "206": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "569": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "24": { "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": [] } }, "491": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "570": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "571": { "goal": [{ "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "572": { "goal": [{ "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "573": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "574": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "575": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "576": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T102 T103) (merge (. T102 T105) T104 X137))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "535": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "579": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "536": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "580": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T109 T110) T108 X137)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "262": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "460": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "581": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "582": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T54 X25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X25"], "exprvars": [] } }, "583": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "188": { "goal": [{ "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "584": { "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": [] } }, "189": { "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": [] } }, "585": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "586": { "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": [] } }, "466": { "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": [] } }, "587": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "544": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "588": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "468": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "589": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "227": { "goal": [{ "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "546": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "547": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "229": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } } }, "edges": [ { "from": 11, "to": 24, "label": "CASE" }, { "from": 24, "to": 188, "label": "PARALLEL" }, { "from": 24, "to": 189, "label": "PARALLEL" }, { "from": 188, "to": 199, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 188, "to": 202, "label": "EVAL-BACKTRACK" }, { "from": 189, "to": 227, "label": "PARALLEL" }, { "from": 189, "to": 229, "label": "PARALLEL" }, { "from": 199, "to": 206, "label": "SUCCESS" }, { "from": 227, "to": 262, "label": "EVAL with clause\nmergesort(.(X5, []), .(X5, [])).\nand substitutionX5 -> T7,\nT1 -> .(T7, []),\nT2 -> .(T7, [])" }, { "from": 227, "to": 270, "label": "EVAL-BACKTRACK" }, { "from": 229, "to": 353, "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": 229, "to": 355, "label": "EVAL-BACKTRACK" }, { "from": 262, "to": 279, "label": "SUCCESS" }, { "from": 353, "to": 439, "label": "SPLIT 1" }, { "from": 353, "to": 440, "label": "SPLIT 2\nreplacements:X22 -> T23,\nX23 -> T24" }, { "from": 439, "to": 441, "label": "CASE" }, { "from": 440, "to": 482, "label": "SPLIT 1" }, { "from": 440, "to": 483, "label": "SPLIT 2\nreplacements:X24 -> T53,\nT24 -> T54" }, { "from": 441, "to": 442, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 442, "to": 460, "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": 460, "to": 466, "label": "CASE" }, { "from": 466, "to": 468, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 468, "to": 471, "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": 471, "to": 472, "label": "CASE" }, { "from": 472, "to": 473, "label": "PARALLEL" }, { "from": 472, "to": 474, "label": "PARALLEL" }, { "from": 473, "to": 475, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT45 -> [],\nX61 -> [],\nX60 -> []" }, { "from": 473, "to": 476, "label": "EVAL-BACKTRACK" }, { "from": 474, "to": 478, "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": 474, "to": 479, "label": "EVAL-BACKTRACK" }, { "from": 475, "to": 477, "label": "SUCCESS" }, { "from": 478, "to": 471, "label": "INSTANCE with matching:\nT45 -> T52\nX61 -> X79\nX60 -> X78" }, { "from": 482, "to": 484, "label": "CASE" }, { "from": 483, "to": 582, "label": "SPLIT 1" }, { "from": 483, "to": 583, "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": 535, "label": "PARALLEL" }, { "from": 486, "to": 536, "label": "PARALLEL" }, { "from": 487, "to": 491, "label": "SUCCESS" }, { "from": 535, "to": 544, "label": "EVAL with clause\nmergesort(.(X84, []), .(X84, [])).\nand substitutionX84 -> T59,\nT23 -> .(T59, []),\nX24 -> .(T59, [])" }, { "from": 535, "to": 546, "label": "EVAL-BACKTRACK" }, { "from": 536, "to": 553, "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": 536, "to": 554, "label": "EVAL-BACKTRACK" }, { "from": 544, "to": 547, "label": "SUCCESS" }, { "from": 553, "to": 559, "label": "SPLIT 1" }, { "from": 553, "to": 560, "label": "SPLIT 2\nreplacements:X103 -> T72,\nX104 -> T73" }, { "from": 559, "to": 439, "label": "INSTANCE with matching:\nT20 -> T69\nT21 -> T70\nT22 -> T71\nX22 -> X103\nX23 -> X104" }, { "from": 560, "to": 561, "label": "SPLIT 1" }, { "from": 560, "to": 562, "label": "SPLIT 2\nreplacements:X105 -> T74,\nT73 -> T75" }, { "from": 561, "to": 482, "label": "INSTANCE with matching:\nT23 -> T72\nX24 -> X105" }, { "from": 562, "to": 563, "label": "SPLIT 1" }, { "from": 562, "to": 564, "label": "SPLIT 2\nreplacements:X106 -> T76,\nT74 -> T77" }, { "from": 563, "to": 482, "label": "INSTANCE with matching:\nT23 -> T75\nX24 -> X106" }, { "from": 564, "to": 565, "label": "CASE" }, { "from": 565, "to": 566, "label": "PARALLEL" }, { "from": 565, "to": 567, "label": "PARALLEL" }, { "from": 566, "to": 568, "label": "EVAL with clause\nmerge([], X114, X114).\nand substitutionT77 -> [],\nT76 -> T84,\nX114 -> T84,\nX107 -> T84" }, { "from": 566, "to": 569, "label": "EVAL-BACKTRACK" }, { "from": 567, "to": 571, "label": "PARALLEL" }, { "from": 567, "to": 572, "label": "PARALLEL" }, { "from": 568, "to": 570, "label": "SUCCESS" }, { "from": 571, "to": 573, "label": "EVAL with clause\nmerge(X119, [], X119).\nand substitutionT77 -> T89,\nX119 -> T89,\nT76 -> [],\nX107 -> T89" }, { "from": 571, "to": 574, "label": "EVAL-BACKTRACK" }, { "from": 572, "to": 576, "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": 572, "to": 579, "label": "EVAL-BACKTRACK" }, { "from": 573, "to": 575, "label": "SUCCESS" }, { "from": 576, "to": 580, "label": "UNIFY CASE with substitutionT102 -> T109,\nT103 -> T109,\nT104 -> T108,\nT107 -> T109,\nT105 -> T110" }, { "from": 576, "to": 581, "label": "UNIFY-BACKTRACK" }, { "from": 580, "to": 564, "label": "INSTANCE with matching:\nT77 -> .(T109, T110)\nT76 -> T108\nX107 -> X137" }, { "from": 582, "to": 482, "label": "INSTANCE with matching:\nT23 -> T54\nX24 -> X25" }, { "from": 583, "to": 584, "label": "CASE" }, { "from": 584, "to": 585, "label": "PARALLEL" }, { "from": 584, "to": 586, "label": "PARALLEL" }, { "from": 585, "to": 587, "label": "EVAL with clause\nmerge([], X146, X146).\nand substitutionT112 -> [],\nT111 -> T119,\nX146 -> T119,\nT19 -> T119" }, { "from": 585, "to": 588, "label": "EVAL-BACKTRACK" }, { "from": 586, "to": 590, "label": "PARALLEL" }, { "from": 586, "to": 591, "label": "PARALLEL" }, { "from": 587, "to": 589, "label": "SUCCESS" }, { "from": 590, "to": 592, "label": "EVAL with clause\nmerge(X151, [], X151).\nand substitutionT112 -> T124,\nX151 -> T124,\nT111 -> [],\nT19 -> T124" }, { "from": 590, "to": 593, "label": "EVAL-BACKTRACK" }, { "from": 591, "to": 597, "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": 591, "to": 598, "label": "EVAL-BACKTRACK" }, { "from": 592, "to": 594, "label": "SUCCESS" }, { "from": 597, "to": 600, "label": "UNIFY CASE with substitutionT135 -> T144,\nT140 -> T144,\nT141 -> T145,\nT142 -> T146" }, { "from": 597, "to": 601, "label": "UNIFY-BACKTRACK" }, { "from": 600, "to": 583, "label": "INSTANCE with matching:\nT112 -> .(T144, T146)\nT111 -> T145\nT19 -> T139" } ], "type": "Graph" } } ---------------------------------------- (112) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f11_in([]) -> f11_out1 f11_in(.(T7, [])) -> f11_out1 f11_in(T19) -> U1(f353_in(T19), T19) U1(f353_out1(X24, X25), T19) -> f11_out1 f471_in -> f471_out1 f471_in -> U2(f471_in) U2(f471_out1) -> f471_out1 f439_in -> U3(f471_in) U3(f471_out1) -> f439_out1 f482_in -> f482_out1 f482_in -> U4(f553_in) U4(f553_out1) -> f482_out1 f564_in -> f564_out1 f564_in -> U5(f564_in) U5(f564_out1) -> f564_out1 f583_in(T119) -> f583_out1([], T119) f583_in(T124) -> f583_out1(T124, []) f583_in(.(T144, T139)) -> U6(f583_in(T139), .(T144, T139)) U6(f583_out1(.(T144, T146), T145), .(T144, T139)) -> f583_out1(.(T144, T146), .(T144, T145)) f353_in(T19) -> U7(f439_in, T19) U7(f439_out1, T19) -> U8(f440_in(T19), T19) U8(f440_out1(X24, X25), T19) -> f353_out1(X24, X25) f440_in(T19) -> U9(f482_in, T19) U9(f482_out1, T19) -> U10(f483_in(T19), T19) U10(f483_out1(T53, X25), T19) -> f440_out1(T53, X25) f483_in(T19) -> U11(f482_in, T19) U11(f482_out1, T19) -> U12(f583_in(T19), T19) U12(f583_out1(T112, T111), T19) -> f483_out1(T112, T111) f553_in -> U13(f439_in) U13(f439_out1) -> U14(f560_in) U14(f560_out1) -> f553_out1 f560_in -> U15(f482_in) U15(f482_out1) -> U16(f562_in) U16(f562_out1) -> f560_out1 f562_in -> U17(f482_in) U17(f482_out1) -> U18(f564_in) U18(f564_out1) -> f562_out1 Q is empty. ---------------------------------------- (113) QTRSRRRProof (EQUIVALENT) Used ordering: f11_in/1(YES) []/0) f11_out1/0) ./2(YES,YES) U1/2(YES,YES) f353_in/1(YES) f353_out1/2(YES,YES) f471_in/0) f471_out1/0) U2/1)YES( f439_in/0) U3/1)YES( f439_out1/0) f482_in/0) f482_out1/0) U4/1)YES( f553_in/0) f553_out1/0) f564_in/0) f564_out1/0) U5/1)YES( f583_in/1(YES) f583_out1/2(YES,YES) U6/2(YES,YES) U7/2(YES,YES) U8/2(YES,YES) f440_in/1(YES) f440_out1/2(YES,YES) U9/2(YES,YES) U10/2(YES,YES) f483_in/1(YES) f483_out1/2(YES,YES) U11/2(YES,YES) U12/2(YES,YES) U13/1)YES( U14/1)YES( f560_in/0) f560_out1/0) U15/1)YES( U16/1)YES( f562_in/0) f562_out1/0) U17/1)YES( U18/1)YES( Quasi precedence: f11_in_1 > [f11_out1, U1_2] f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > [f471_in, f471_out1, f439_in, f439_out1, f482_in, f482_out1, f553_in, f553_out1, f564_in, f564_out1, f560_in, f560_out1, f562_in, f562_out1] > f583_in_1 > [] f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > [f471_in, f471_out1, f439_in, f439_out1, f482_in, f482_out1, f553_in, f553_out1, f564_in, f564_out1, f560_in, f560_out1, f562_in, f562_out1] > f583_in_1 > U6_2 > [._2, f583_out1_2] f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > [f471_in, f471_out1, f439_in, f439_out1, f482_in, f482_out1, f553_in, f553_out1, f564_in, f564_out1, f560_in, f560_out1, f562_in, f562_out1] > U8_2 f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > [f471_in, f471_out1, f439_in, f439_out1, f482_in, f482_out1, f553_in, f553_out1, f564_in, f564_out1, f560_in, f560_out1, f562_in, f562_out1] > U10_2 > [f353_out1_2, f440_out1_2] f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > [f471_in, f471_out1, f439_in, f439_out1, f482_in, f482_out1, f553_in, f553_out1, f564_in, f564_out1, f560_in, f560_out1, f562_in, f562_out1] > U12_2 > f483_out1_2 f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > U11_2 > f583_in_1 > [] f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > U11_2 > f583_in_1 > U6_2 > [._2, f583_out1_2] f11_in_1 > f353_in_1 > [U7_2, f440_in_1] > [U9_2, f483_in_1] > U11_2 > U12_2 > f483_out1_2 Status: f11_in_1: multiset status []: multiset status f11_out1: multiset status ._2: multiset status U1_2: multiset status f353_in_1: [1] f353_out1_2: multiset status f471_in: multiset status f471_out1: multiset status f439_in: multiset status f439_out1: multiset status f482_in: multiset status f482_out1: multiset status f553_in: multiset status f553_out1: multiset status f564_in: multiset status f564_out1: multiset status f583_in_1: multiset status f583_out1_2: multiset status U6_2: multiset status U7_2: multiset status U8_2: multiset status f440_in_1: multiset status f440_out1_2: multiset status U9_2: multiset status U10_2: multiset status f483_in_1: multiset status f483_out1_2: multiset status U11_2: multiset status U12_2: multiset status f560_in: multiset status f560_out1: multiset status f562_in: multiset status f562_out1: multiset status With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: f11_in([]) -> f11_out1 f11_in(.(T7, [])) -> f11_out1 f11_in(T19) -> U1(f353_in(T19), T19) U1(f353_out1(X24, X25), T19) -> f11_out1 f583_in(T119) -> f583_out1([], T119) f583_in(T124) -> f583_out1(T124, []) f583_in(.(T144, T139)) -> U6(f583_in(T139), .(T144, T139)) U6(f583_out1(.(T144, T146), T145), .(T144, T139)) -> f583_out1(.(T144, T146), .(T144, T145)) f353_in(T19) -> U7(f439_in, T19) U7(f439_out1, T19) -> U8(f440_in(T19), T19) U8(f440_out1(X24, X25), T19) -> f353_out1(X24, X25) f440_in(T19) -> U9(f482_in, T19) U9(f482_out1, T19) -> U10(f483_in(T19), T19) U10(f483_out1(T53, X25), T19) -> f440_out1(T53, X25) f483_in(T19) -> U11(f482_in, T19) U11(f482_out1, T19) -> U12(f583_in(T19), T19) U12(f583_out1(T112, T111), T19) -> f483_out1(T112, T111) ---------------------------------------- (114) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f471_in -> f471_out1 f471_in -> U2(f471_in) U2(f471_out1) -> f471_out1 f439_in -> U3(f471_in) U3(f471_out1) -> f439_out1 f482_in -> f482_out1 f482_in -> U4(f553_in) U4(f553_out1) -> f482_out1 f564_in -> f564_out1 f564_in -> U5(f564_in) U5(f564_out1) -> f564_out1 f553_in -> U13(f439_in) U13(f439_out1) -> U14(f560_in) U14(f560_out1) -> f553_out1 f560_in -> U15(f482_in) U15(f482_out1) -> U16(f562_in) U16(f562_out1) -> f560_out1 f562_in -> U17(f482_in) U17(f482_out1) -> U18(f564_in) U18(f564_out1) -> f562_out1 Q is empty. ---------------------------------------- (115) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (116) Obligation: Q DP problem: The TRS P consists of the following rules: F471_IN -> U2^1(f471_in) F471_IN -> F471_IN F439_IN -> U3^1(f471_in) F439_IN -> F471_IN F482_IN -> U4^1(f553_in) F482_IN -> F553_IN F564_IN -> U5^1(f564_in) F564_IN -> F564_IN F553_IN -> U13^1(f439_in) F553_IN -> F439_IN U13^1(f439_out1) -> U14^1(f560_in) U13^1(f439_out1) -> F560_IN F560_IN -> U15^1(f482_in) F560_IN -> F482_IN U15^1(f482_out1) -> U16^1(f562_in) U15^1(f482_out1) -> F562_IN F562_IN -> U17^1(f482_in) F562_IN -> F482_IN U17^1(f482_out1) -> U18^1(f564_in) U17^1(f482_out1) -> F564_IN The TRS R consists of the following rules: f471_in -> f471_out1 f471_in -> U2(f471_in) U2(f471_out1) -> f471_out1 f439_in -> U3(f471_in) U3(f471_out1) -> f439_out1 f482_in -> f482_out1 f482_in -> U4(f553_in) U4(f553_out1) -> f482_out1 f564_in -> f564_out1 f564_in -> U5(f564_in) U5(f564_out1) -> f564_out1 f553_in -> U13(f439_in) U13(f439_out1) -> U14(f560_in) U14(f560_out1) -> f553_out1 f560_in -> U15(f482_in) U15(f482_out1) -> U16(f562_in) U16(f562_out1) -> f560_out1 f562_in -> U17(f482_in) U17(f482_out1) -> U18(f564_in) U18(f564_out1) -> f562_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (117) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 11 less nodes. ---------------------------------------- (118) Complex Obligation (AND) ---------------------------------------- (119) Obligation: Q DP problem: The TRS P consists of the following rules: F564_IN -> F564_IN The TRS R consists of the following rules: f471_in -> f471_out1 f471_in -> U2(f471_in) U2(f471_out1) -> f471_out1 f439_in -> U3(f471_in) U3(f471_out1) -> f439_out1 f482_in -> f482_out1 f482_in -> U4(f553_in) U4(f553_out1) -> f482_out1 f564_in -> f564_out1 f564_in -> U5(f564_in) U5(f564_out1) -> f564_out1 f553_in -> U13(f439_in) U13(f439_out1) -> U14(f560_in) U14(f560_out1) -> f553_out1 f560_in -> U15(f482_in) U15(f482_out1) -> U16(f562_in) U16(f562_out1) -> f560_out1 f562_in -> U17(f482_in) U17(f482_out1) -> U18(f564_in) U18(f564_out1) -> f562_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (120) 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. ---------------------------------------- (121) Obligation: Q DP problem: The TRS P consists of the following rules: F564_IN -> F564_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (122) 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 = F564_IN evaluates to t =F564_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 F564_IN to F564_IN. ---------------------------------------- (123) NO ---------------------------------------- (124) Obligation: Q DP problem: The TRS P consists of the following rules: F471_IN -> F471_IN The TRS R consists of the following rules: f471_in -> f471_out1 f471_in -> U2(f471_in) U2(f471_out1) -> f471_out1 f439_in -> U3(f471_in) U3(f471_out1) -> f439_out1 f482_in -> f482_out1 f482_in -> U4(f553_in) U4(f553_out1) -> f482_out1 f564_in -> f564_out1 f564_in -> U5(f564_in) U5(f564_out1) -> f564_out1 f553_in -> U13(f439_in) U13(f439_out1) -> U14(f560_in) U14(f560_out1) -> f553_out1 f560_in -> U15(f482_in) U15(f482_out1) -> U16(f562_in) U16(f562_out1) -> f560_out1 f562_in -> U17(f482_in) U17(f482_out1) -> U18(f564_in) U18(f564_out1) -> f562_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (125) 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. ---------------------------------------- (126) Obligation: Q DP problem: The TRS P consists of the following rules: F471_IN -> F471_IN R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (127) 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 = F471_IN evaluates to t =F471_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 F471_IN to F471_IN. ---------------------------------------- (128) NO ---------------------------------------- (129) Obligation: Q DP problem: The TRS P consists of the following rules: F553_IN -> U13^1(f439_in) U13^1(f439_out1) -> F560_IN F560_IN -> U15^1(f482_in) U15^1(f482_out1) -> F562_IN F562_IN -> F482_IN F482_IN -> F553_IN F560_IN -> F482_IN The TRS R consists of the following rules: f471_in -> f471_out1 f471_in -> U2(f471_in) U2(f471_out1) -> f471_out1 f439_in -> U3(f471_in) U3(f471_out1) -> f439_out1 f482_in -> f482_out1 f482_in -> U4(f553_in) U4(f553_out1) -> f482_out1 f564_in -> f564_out1 f564_in -> U5(f564_in) U5(f564_out1) -> f564_out1 f553_in -> U13(f439_in) U13(f439_out1) -> U14(f560_in) U14(f560_out1) -> f553_out1 f560_in -> U15(f482_in) U15(f482_out1) -> U16(f562_in) U16(f562_out1) -> f560_out1 f562_in -> U17(f482_in) U17(f482_out1) -> U18(f564_in) U18(f564_out1) -> f562_out1 Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (130) 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": { "type": "Nodes", "430": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "433": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "434": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "555": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T102 T103) (merge (. T102 T105) T104 X137))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "116": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "435": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "556": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "557": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T109 T110) T108 X137)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X137"], "exprvars": [] } }, "558": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "515": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T72 X105)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X105"], "exprvars": [] } }, "517": { "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": [] } }, "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": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "520": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T75 X106)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X106"], "exprvars": [] } }, "521": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "5": { "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": [] } }, "489": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "127": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "524": { "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": [] } }, "525": { "goal": [{ "clause": 5, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "526": { "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": [] } }, "527": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "490": { "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": [] } }, "492": { "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": [] } }, "493": { "goal": [{ "clause": 0, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "494": { "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": [] } }, "495": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "177": { "goal": [{ "clause": 1, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "496": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "178": { "goal": [{ "clause": 2, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "497": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "530": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "410": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "498": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "531": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "411": { "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": [] } }, "499": { "goal": [{ "clause": 2, "scope": 5, "term": "(mergesort T23 X24)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X24"], "exprvars": [] } }, "532": { "goal": [{ "clause": 6, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "533": { "goal": [{ "clause": 7, "scope": 6, "term": "(merge T77 T76 X107)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X107"], "exprvars": [] } }, "610": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T54 X25)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X25"], "exprvars": [] } }, "611": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "414": { "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": [] } }, "612": { "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": [] } }, "415": { "goal": [{ "clause": 4, "scope": 2, "term": "(split (. T20 (. T21 T22)) X22 X23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X22", "X23" ], "exprvars": [] } }, "613": { "goal": [{ "clause": 5, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "614": { "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": [] } }, "417": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "615": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "539": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "616": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "617": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "618": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "619": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T112 T111 T19)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T19"], "free": [], "exprvars": [] } }, "180": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "181": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "182": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "183": { "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": [] } }, "184": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "142": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "540": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "420": { "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": [] } }, "421": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T36 T37) X43 X42)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X42", "X43" ], "exprvars": [] } }, "542": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "620": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "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": [] } }, "621": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "424": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "501": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "622": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "502": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "623": { "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": -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": [] } }, "624": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "427": { "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": [] } }, "504": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "625": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T144 T146) T145 T139)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T139", "T144" ], "free": [], "exprvars": [] } }, "428": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T45 X61 X60)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X60", "X61" ], "exprvars": [] } }, "505": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T69 (. T70 T71)) X103 X104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X103", "X104" ], "exprvars": [] } }, "626": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "506": { "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": [] } }, "41": { "goal": [{ "clause": 0, "scope": 1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "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": [] } } }, "edges": [ { "from": 1, "to": 5, "label": "CASE" }, { "from": 5, "to": 41, "label": "PARALLEL" }, { "from": 5, "to": 42, "label": "PARALLEL" }, { "from": 41, "to": 116, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 41, "to": 127, "label": "EVAL-BACKTRACK" }, { "from": 42, "to": 177, "label": "PARALLEL" }, { "from": 42, "to": 178, "label": "PARALLEL" }, { "from": 116, "to": 142, "label": "SUCCESS" }, { "from": 177, "to": 180, "label": "EVAL with clause\nmergesort(.(X5, []), .(X5, [])).\nand substitutionX5 -> T7,\nT1 -> .(T7, []),\nT2 -> .(T7, [])" }, { "from": 177, "to": 181, "label": "EVAL-BACKTRACK" }, { "from": 178, "to": 183, "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": 178, "to": 184, "label": "EVAL-BACKTRACK" }, { "from": 180, "to": 182, "label": "SUCCESS" }, { "from": 183, "to": 410, "label": "SPLIT 1" }, { "from": 183, "to": 411, "label": "SPLIT 2\nreplacements:X22 -> T23,\nX23 -> T24" }, { "from": 410, "to": 414, "label": "CASE" }, { "from": 411, "to": 489, "label": "SPLIT 1" }, { "from": 411, "to": 490, "label": "SPLIT 2\nreplacements:X24 -> T53,\nT24 -> T54" }, { "from": 414, "to": 415, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 415, "to": 417, "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": 417, "to": 420, "label": "CASE" }, { "from": 420, "to": 421, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 421, "to": 424, "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": 424, "to": 427, "label": "CASE" }, { "from": 427, "to": 428, "label": "PARALLEL" }, { "from": 427, "to": 430, "label": "PARALLEL" }, { "from": 428, "to": 433, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT45 -> [],\nX61 -> [],\nX60 -> []" }, { "from": 428, "to": 434, "label": "EVAL-BACKTRACK" }, { "from": 430, "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": 430, "to": 481, "label": "EVAL-BACKTRACK" }, { "from": 433, "to": 435, "label": "SUCCESS" }, { "from": 480, "to": 424, "label": "INSTANCE with matching:\nT45 -> T52\nX61 -> X79\nX60 -> X78" }, { "from": 489, "to": 492, "label": "CASE" }, { "from": 490, "to": 610, "label": "SPLIT 1" }, { "from": 490, "to": 611, "label": "SPLIT 2\nreplacements:X25 -> T111,\nT53 -> T112" }, { "from": 492, "to": 493, "label": "PARALLEL" }, { "from": 492, "to": 494, "label": "PARALLEL" }, { "from": 493, "to": 495, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT23 -> [],\nX24 -> []" }, { "from": 493, "to": 496, "label": "EVAL-BACKTRACK" }, { "from": 494, "to": 498, "label": "PARALLEL" }, { "from": 494, "to": 499, "label": "PARALLEL" }, { "from": 495, "to": 497, "label": "SUCCESS" }, { "from": 498, "to": 500, "label": "EVAL with clause\nmergesort(.(X84, []), .(X84, [])).\nand substitutionX84 -> T59,\nT23 -> .(T59, []),\nX24 -> .(T59, [])" }, { "from": 498, "to": 501, "label": "EVAL-BACKTRACK" }, { "from": 499, "to": 503, "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": 499, "to": 504, "label": "EVAL-BACKTRACK" }, { "from": 500, "to": 502, "label": "SUCCESS" }, { "from": 503, "to": 505, "label": "SPLIT 1" }, { "from": 503, "to": 506, "label": "SPLIT 2\nreplacements:X103 -> T72,\nX104 -> T73" }, { "from": 505, "to": 410, "label": "INSTANCE with matching:\nT20 -> T69\nT21 -> T70\nT22 -> T71\nX22 -> X103\nX23 -> X104" }, { "from": 506, "to": 515, "label": "SPLIT 1" }, { "from": 506, "to": 517, "label": "SPLIT 2\nreplacements:X105 -> T74,\nT73 -> T75" }, { "from": 515, "to": 489, "label": "INSTANCE with matching:\nT23 -> T72\nX24 -> X105" }, { "from": 517, "to": 520, "label": "SPLIT 1" }, { "from": 517, "to": 521, "label": "SPLIT 2\nreplacements:X106 -> T76,\nT74 -> T77" }, { "from": 520, "to": 489, "label": "INSTANCE with matching:\nT23 -> T75\nX24 -> X106" }, { "from": 521, "to": 524, "label": "CASE" }, { "from": 524, "to": 525, "label": "PARALLEL" }, { "from": 524, "to": 526, "label": "PARALLEL" }, { "from": 525, "to": 527, "label": "EVAL with clause\nmerge([], X114, X114).\nand substitutionT77 -> [],\nT76 -> T84,\nX114 -> T84,\nX107 -> T84" }, { "from": 525, "to": 530, "label": "EVAL-BACKTRACK" }, { "from": 526, "to": 532, "label": "PARALLEL" }, { "from": 526, "to": 533, "label": "PARALLEL" }, { "from": 527, "to": 531, "label": "SUCCESS" }, { "from": 532, "to": 539, "label": "EVAL with clause\nmerge(X119, [], X119).\nand substitutionT77 -> T89,\nX119 -> T89,\nT76 -> [],\nX107 -> T89" }, { "from": 532, "to": 540, "label": "EVAL-BACKTRACK" }, { "from": 533, "to": 555, "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": 533, "to": 556, "label": "EVAL-BACKTRACK" }, { "from": 539, "to": 542, "label": "SUCCESS" }, { "from": 555, "to": 557, "label": "UNIFY CASE with substitutionT102 -> T109,\nT103 -> T109,\nT104 -> T108,\nT107 -> T109,\nT105 -> T110" }, { "from": 555, "to": 558, "label": "UNIFY-BACKTRACK" }, { "from": 557, "to": 521, "label": "INSTANCE with matching:\nT77 -> .(T109, T110)\nT76 -> T108\nX107 -> X137" }, { "from": 610, "to": 489, "label": "INSTANCE with matching:\nT23 -> T54\nX24 -> X25" }, { "from": 611, "to": 612, "label": "CASE" }, { "from": 612, "to": 613, "label": "PARALLEL" }, { "from": 612, "to": 614, "label": "PARALLEL" }, { "from": 613, "to": 615, "label": "EVAL with clause\nmerge([], X146, X146).\nand substitutionT112 -> [],\nT111 -> T119,\nX146 -> T119,\nT19 -> T119" }, { "from": 613, "to": 616, "label": "EVAL-BACKTRACK" }, { "from": 614, "to": 618, "label": "PARALLEL" }, { "from": 614, "to": 619, "label": "PARALLEL" }, { "from": 615, "to": 617, "label": "SUCCESS" }, { "from": 618, "to": 620, "label": "EVAL with clause\nmerge(X151, [], X151).\nand substitutionT112 -> T124,\nX151 -> T124,\nT111 -> [],\nT19 -> T124" }, { "from": 618, "to": 621, "label": "EVAL-BACKTRACK" }, { "from": 619, "to": 623, "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": 619, "to": 624, "label": "EVAL-BACKTRACK" }, { "from": 620, "to": 622, "label": "SUCCESS" }, { "from": 623, "to": 625, "label": "UNIFY CASE with substitutionT135 -> T144,\nT140 -> T144,\nT141 -> T145,\nT142 -> T146" }, { "from": 623, "to": 626, "label": "UNIFY-BACKTRACK" }, { "from": 625, "to": 611, "label": "INSTANCE with matching:\nT112 -> .(T144, T146)\nT111 -> T145\nT19 -> T139" } ], "type": "Graph" } } ---------------------------------------- (131) Complex Obligation (AND) ---------------------------------------- (132) Obligation: Rules: f614_out(T19) -> f612_out(T19) :|: TRUE f613_out(x) -> f612_out(x) :|: TRUE f612_in(x1) -> f614_in(x1) :|: TRUE f612_in(x2) -> f613_in(x2) :|: TRUE f614_in(x3) -> f618_in(x3) :|: TRUE f618_out(x4) -> f614_out(x4) :|: TRUE f614_in(x5) -> f619_in(x5) :|: TRUE f619_out(x6) -> f614_out(x6) :|: TRUE f612_out(x7) -> f611_out(x7) :|: TRUE f611_in(x8) -> f612_in(x8) :|: TRUE f625_in(T144, T139) -> f611_in(T139) :|: TRUE f611_out(x9) -> f625_out(x10, x9) :|: TRUE f619_in(x11) -> f624_in :|: TRUE f619_in(.(x12, x13)) -> f623_in(x12, x13) :|: TRUE f624_out -> f619_out(x14) :|: TRUE f623_out(x15, x16) -> f619_out(.(x15, x16)) :|: TRUE f625_out(x17, x18) -> f623_out(x19, x18) :|: TRUE f623_in(x20, x21) -> f626_in :|: TRUE f623_in(x22, x23) -> f625_in(x24, x23) :|: TRUE f626_out -> f623_out(x25, x26) :|: TRUE f1_in(T2) -> f5_in(T2) :|: TRUE f5_out(x27) -> f1_out(x27) :|: TRUE f5_in(x28) -> f41_in(x28) :|: TRUE f41_out(x29) -> f5_out(x29) :|: TRUE f5_in(x30) -> f42_in(x30) :|: TRUE f42_out(x31) -> f5_out(x31) :|: TRUE f42_in(x32) -> f178_in(x32) :|: TRUE f42_in(x33) -> f177_in(x33) :|: TRUE f177_out(x34) -> f42_out(x34) :|: TRUE f178_out(x35) -> f42_out(x35) :|: TRUE f178_in(x36) -> f184_in :|: TRUE f184_out -> f178_out(x37) :|: TRUE f183_out(x38) -> f178_out(x38) :|: TRUE f178_in(x39) -> f183_in(x39) :|: TRUE f411_out(x40) -> f183_out(x40) :|: TRUE f183_in(x41) -> f410_in :|: TRUE f410_out -> f411_in(x42) :|: TRUE f490_out(x43) -> f411_out(x43) :|: TRUE f411_in(x44) -> f489_in :|: TRUE f489_out -> f490_in(x45) :|: TRUE f610_out -> f611_in(x46) :|: TRUE f611_out(x47) -> f490_out(x47) :|: TRUE f490_in(x48) -> f610_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (133) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (134) TRUE ---------------------------------------- (135) Obligation: Rules: f555_in -> f558_in :|: TRUE f557_out -> f555_out :|: TRUE f555_in -> f557_in :|: TRUE f558_out -> f555_out :|: TRUE f556_out -> f533_out :|: TRUE f533_in -> f556_in :|: TRUE f533_in -> f555_in :|: TRUE f555_out -> f533_out :|: TRUE f521_out -> f557_out :|: TRUE f557_in -> f521_in :|: TRUE f526_in -> f532_in :|: TRUE f533_out -> f526_out :|: TRUE f526_in -> f533_in :|: TRUE f532_out -> f526_out :|: TRUE f526_out -> f524_out :|: TRUE f524_in -> f526_in :|: TRUE f525_out -> f524_out :|: TRUE f524_in -> f525_in :|: TRUE f521_in -> f524_in :|: TRUE f524_out -> f521_out :|: TRUE f1_in(T2) -> f5_in(T2) :|: TRUE f5_out(x) -> f1_out(x) :|: TRUE f5_in(x1) -> f41_in(x1) :|: TRUE f41_out(x2) -> f5_out(x2) :|: TRUE f5_in(x3) -> f42_in(x3) :|: TRUE f42_out(x4) -> f5_out(x4) :|: TRUE f42_in(x5) -> f178_in(x5) :|: TRUE f42_in(x6) -> f177_in(x6) :|: TRUE f177_out(x7) -> f42_out(x7) :|: TRUE f178_out(x8) -> f42_out(x8) :|: TRUE f178_in(x9) -> f184_in :|: TRUE f184_out -> f178_out(x10) :|: TRUE f183_out(T19) -> f178_out(T19) :|: TRUE f178_in(x11) -> f183_in(x11) :|: TRUE f411_out(x12) -> f183_out(x12) :|: TRUE f183_in(x13) -> f410_in :|: TRUE f410_out -> f411_in(x14) :|: TRUE f490_out(x15) -> f411_out(x15) :|: TRUE f411_in(x16) -> f489_in :|: TRUE f489_out -> f490_in(x17) :|: TRUE f610_out -> f611_in(x18) :|: TRUE f611_out(x19) -> f490_out(x19) :|: TRUE f490_in(x20) -> f610_in :|: TRUE f489_out -> f610_out :|: TRUE f610_in -> f489_in :|: TRUE f489_in -> f492_in :|: TRUE f492_out -> f489_out :|: TRUE f492_in -> f494_in :|: TRUE f494_out -> f492_out :|: TRUE f492_in -> f493_in :|: TRUE f493_out -> f492_out :|: TRUE f494_in -> f499_in :|: TRUE f498_out -> f494_out :|: TRUE f494_in -> f498_in :|: TRUE f499_out -> f494_out :|: TRUE f499_in -> f504_in :|: TRUE f499_in -> f503_in :|: TRUE f503_out -> f499_out :|: TRUE f504_out -> f499_out :|: TRUE f505_out -> f506_in :|: TRUE f506_out -> f503_out :|: TRUE f503_in -> f505_in :|: TRUE f506_in -> f515_in :|: TRUE f517_out -> f506_out :|: TRUE f515_out -> f517_in :|: TRUE f520_out -> f521_in :|: TRUE f521_out -> f517_out :|: TRUE f517_in -> f520_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (136) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (137) TRUE ---------------------------------------- (138) Obligation: Rules: f424_in -> f427_in :|: TRUE f427_out -> f424_out :|: TRUE f424_out -> f480_out :|: TRUE f480_in -> f424_in :|: TRUE f481_out -> f430_out :|: TRUE f430_in -> f480_in :|: TRUE f430_in -> f481_in :|: TRUE f480_out -> f430_out :|: TRUE f428_out -> f427_out :|: TRUE f430_out -> f427_out :|: TRUE f427_in -> f428_in :|: TRUE f427_in -> f430_in :|: TRUE f1_in(T2) -> f5_in(T2) :|: TRUE f5_out(x) -> f1_out(x) :|: TRUE f5_in(x1) -> f41_in(x1) :|: TRUE f41_out(x2) -> f5_out(x2) :|: TRUE f5_in(x3) -> f42_in(x3) :|: TRUE f42_out(x4) -> f5_out(x4) :|: TRUE f42_in(x5) -> f178_in(x5) :|: TRUE f42_in(x6) -> f177_in(x6) :|: TRUE f177_out(x7) -> f42_out(x7) :|: TRUE f178_out(x8) -> f42_out(x8) :|: TRUE f178_in(x9) -> f184_in :|: TRUE f184_out -> f178_out(x10) :|: TRUE f183_out(T19) -> f178_out(T19) :|: TRUE f178_in(x11) -> f183_in(x11) :|: TRUE f411_out(x12) -> f183_out(x12) :|: TRUE f183_in(x13) -> f410_in :|: TRUE f410_out -> f411_in(x14) :|: TRUE f490_out(x15) -> f411_out(x15) :|: TRUE f411_in(x16) -> f489_in :|: TRUE f489_out -> f490_in(x17) :|: TRUE f489_in -> f492_in :|: TRUE f492_out -> f489_out :|: TRUE f492_in -> f494_in :|: TRUE f494_out -> f492_out :|: TRUE f492_in -> f493_in :|: TRUE f493_out -> f492_out :|: TRUE f494_in -> f499_in :|: TRUE f498_out -> f494_out :|: TRUE f494_in -> f498_in :|: TRUE f499_out -> f494_out :|: TRUE f499_in -> f504_in :|: TRUE f499_in -> f503_in :|: TRUE f503_out -> f499_out :|: TRUE f504_out -> f499_out :|: TRUE f505_out -> f506_in :|: TRUE f506_out -> f503_out :|: TRUE f503_in -> f505_in :|: TRUE f410_out -> f505_out :|: TRUE f505_in -> f410_in :|: TRUE f414_out -> f410_out :|: TRUE f410_in -> f414_in :|: TRUE f415_out -> f414_out :|: TRUE f414_in -> f415_in :|: TRUE f415_in -> f417_in :|: TRUE f417_out -> f415_out :|: TRUE f417_in -> f420_in :|: TRUE f420_out -> f417_out :|: TRUE f420_in -> f421_in :|: TRUE f421_out -> f420_out :|: TRUE f421_in -> f424_in :|: TRUE f424_out -> f421_out :|: TRUE f610_out -> f611_in(x18) :|: TRUE f611_out(x19) -> f490_out(x19) :|: TRUE f490_in(x20) -> f610_in :|: TRUE f489_out -> f610_out :|: TRUE f610_in -> f489_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (139) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f424_in -> f427_in :|: TRUE f480_in -> f424_in :|: TRUE f430_in -> f480_in :|: TRUE f427_in -> f430_in :|: TRUE ---------------------------------------- (140) Obligation: Rules: f424_in -> f427_in :|: TRUE f480_in -> f424_in :|: TRUE f430_in -> f480_in :|: TRUE f427_in -> f430_in :|: TRUE ---------------------------------------- (141) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (142) Obligation: Rules: f430_in -> f430_in :|: TRUE ---------------------------------------- (143) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (144) Obligation: Rules: f430_in -> f430_in :|: TRUE ---------------------------------------- (145) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f430_in -> f430_in :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (146) Obligation: Termination digraph: Nodes: (1) f430_in -> f430_in :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (147) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f430_in() Replaced non-predefined constructor symbols by 0. ---------------------------------------- (148) Obligation: Rules: f430_in -> f430_in :|: TRUE ---------------------------------------- (149) 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)) ---------------------------------------- (150) NO ---------------------------------------- (151) Obligation: Rules: f520_out -> f521_in :|: TRUE f521_out -> f517_out :|: TRUE f517_in -> f520_in :|: TRUE f520_in -> f489_in :|: TRUE f489_out -> f520_out :|: TRUE f556_out -> f533_out :|: TRUE f533_in -> f556_in :|: TRUE f533_in -> f555_in :|: TRUE f555_out -> f533_out :|: TRUE f428_in -> f433_in :|: TRUE f434_out -> f428_out :|: TRUE f428_in -> f434_in :|: TRUE f433_out -> f428_out :|: TRUE f530_out -> f525_out :|: TRUE f527_out -> f525_out :|: TRUE f525_in -> f527_in :|: TRUE f525_in -> f530_in :|: TRUE f526_in -> f532_in :|: TRUE f533_out -> f526_out :|: TRUE f526_in -> f533_in :|: TRUE f532_out -> f526_out :|: TRUE f489_out -> f515_out :|: TRUE f515_in -> f489_in :|: TRUE f539_in -> f539_out :|: TRUE f494_in -> f499_in :|: TRUE f498_out -> f494_out :|: TRUE f494_in -> f498_in :|: TRUE f499_out -> f494_out :|: TRUE f428_out -> f427_out :|: TRUE f430_out -> f427_out :|: TRUE f427_in -> f428_in :|: TRUE f427_in -> f430_in :|: TRUE f492_in -> f494_in :|: TRUE f494_out -> f492_out :|: TRUE f492_in -> f493_in :|: TRUE f493_out -> f492_out :|: TRUE f415_in -> f417_in :|: TRUE f417_out -> f415_out :|: TRUE f505_out -> f506_in :|: TRUE f506_out -> f503_out :|: TRUE f503_in -> f505_in :|: TRUE f415_out -> f414_out :|: TRUE f414_in -> f415_in :|: TRUE f417_in -> f420_in :|: TRUE f420_out -> f417_out :|: TRUE f481_out -> f430_out :|: TRUE f430_in -> f480_in :|: TRUE f430_in -> f481_in :|: TRUE f480_out -> f430_out :|: TRUE f555_in -> f558_in :|: TRUE f557_out -> f555_out :|: TRUE f555_in -> f557_in :|: TRUE f558_out -> f555_out :|: TRUE f521_out -> f557_out :|: TRUE f557_in -> f521_in :|: TRUE f506_in -> f515_in :|: TRUE f517_out -> f506_out :|: TRUE f515_out -> f517_in :|: TRUE f499_in -> f504_in :|: TRUE f499_in -> f503_in :|: TRUE f503_out -> f499_out :|: TRUE f504_out -> f499_out :|: TRUE f410_out -> f505_out :|: TRUE f505_in -> f410_in :|: TRUE f424_out -> f480_out :|: TRUE f480_in -> f424_in :|: TRUE f526_out -> f524_out :|: TRUE f524_in -> f526_in :|: TRUE f525_out -> f524_out :|: TRUE f524_in -> f525_in :|: TRUE f527_in -> f527_out :|: TRUE f421_in -> f424_in :|: TRUE f424_out -> f421_out :|: TRUE f420_in -> f421_in :|: TRUE f421_out -> f420_out :|: TRUE f433_in -> f433_out :|: TRUE f532_in -> f540_in :|: TRUE f539_out -> f532_out :|: TRUE f532_in -> f539_in :|: TRUE f540_out -> f532_out :|: TRUE f489_in -> f492_in :|: TRUE f492_out -> f489_out :|: TRUE f424_in -> f427_in :|: TRUE f427_out -> f424_out :|: TRUE f521_in -> f524_in :|: TRUE f524_out -> f521_out :|: TRUE f414_out -> f410_out :|: TRUE f410_in -> f414_in :|: TRUE f1_in(T2) -> f5_in(T2) :|: TRUE f5_out(x) -> f1_out(x) :|: TRUE f5_in(x1) -> f41_in(x1) :|: TRUE f41_out(x2) -> f5_out(x2) :|: TRUE f5_in(x3) -> f42_in(x3) :|: TRUE f42_out(x4) -> f5_out(x4) :|: TRUE f42_in(x5) -> f178_in(x5) :|: TRUE f42_in(x6) -> f177_in(x6) :|: TRUE f177_out(x7) -> f42_out(x7) :|: TRUE f178_out(x8) -> f42_out(x8) :|: TRUE f178_in(x9) -> f184_in :|: TRUE f184_out -> f178_out(x10) :|: TRUE f183_out(T19) -> f178_out(T19) :|: TRUE f178_in(x11) -> f183_in(x11) :|: TRUE f411_out(x12) -> f183_out(x12) :|: TRUE f183_in(x13) -> f410_in :|: TRUE f410_out -> f411_in(x14) :|: TRUE f490_out(x15) -> f411_out(x15) :|: TRUE f411_in(x16) -> f489_in :|: TRUE f489_out -> f490_in(x17) :|: TRUE f610_out -> f611_in(x18) :|: TRUE f611_out(x19) -> f490_out(x19) :|: TRUE f490_in(x20) -> f610_in :|: TRUE f489_out -> f610_out :|: TRUE f610_in -> f489_in :|: TRUE Start term: f1_in(T2) ---------------------------------------- (152) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f428_in -> f433_in :|: TRUE f433_out -> f428_out :|: TRUE f515_in -> f489_in :|: TRUE f494_in -> f499_in :|: TRUE f428_out -> f427_out :|: TRUE f430_out -> f427_out :|: TRUE f427_in -> f428_in :|: TRUE f427_in -> f430_in :|: TRUE f492_in -> f494_in :|: TRUE f415_in -> f417_in :|: TRUE f417_out -> f415_out :|: TRUE f505_out -> f506_in :|: TRUE f503_in -> f505_in :|: TRUE f415_out -> f414_out :|: TRUE f414_in -> f415_in :|: TRUE f417_in -> f420_in :|: TRUE f420_out -> f417_out :|: TRUE f430_in -> f480_in :|: TRUE f480_out -> f430_out :|: TRUE f506_in -> f515_in :|: TRUE f499_in -> f503_in :|: TRUE f410_out -> f505_out :|: TRUE f505_in -> f410_in :|: TRUE f424_out -> f480_out :|: TRUE f480_in -> f424_in :|: TRUE f421_in -> f424_in :|: TRUE f424_out -> f421_out :|: TRUE f420_in -> f421_in :|: TRUE f421_out -> f420_out :|: TRUE f433_in -> f433_out :|: TRUE f489_in -> f492_in :|: TRUE f424_in -> f427_in :|: TRUE f427_out -> f424_out :|: TRUE f414_out -> f410_out :|: TRUE f410_in -> f414_in :|: TRUE f410_out -> f411_in(x14) :|: TRUE f411_in(x16) -> f489_in :|: TRUE ---------------------------------------- (153) Obligation: Rules: f428_in -> f433_in :|: TRUE f433_out -> f428_out :|: TRUE f515_in -> f489_in :|: TRUE f494_in -> f499_in :|: TRUE f428_out -> f427_out :|: TRUE f430_out -> f427_out :|: TRUE f427_in -> f428_in :|: TRUE f427_in -> f430_in :|: TRUE f492_in -> f494_in :|: TRUE f415_in -> f417_in :|: TRUE f417_out -> f415_out :|: TRUE f505_out -> f506_in :|: TRUE f503_in -> f505_in :|: TRUE f415_out -> f414_out :|: TRUE f414_in -> f415_in :|: TRUE f417_in -> f420_in :|: TRUE f420_out -> f417_out :|: TRUE f430_in -> f480_in :|: TRUE f480_out -> f430_out :|: TRUE f506_in -> f515_in :|: TRUE f499_in -> f503_in :|: TRUE f410_out -> f505_out :|: TRUE f505_in -> f410_in :|: TRUE f424_out -> f480_out :|: TRUE f480_in -> f424_in :|: TRUE f421_in -> f424_in :|: TRUE f424_out -> f421_out :|: TRUE f420_in -> f421_in :|: TRUE f421_out -> f420_out :|: TRUE f433_in -> f433_out :|: TRUE f489_in -> f492_in :|: TRUE f424_in -> f427_in :|: TRUE f427_out -> f424_out :|: TRUE f414_out -> f410_out :|: TRUE f410_in -> f414_in :|: TRUE f410_out -> f411_in(x14) :|: TRUE f411_in(x16) -> f489_in :|: TRUE ---------------------------------------- (154) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (155) Obligation: Rules: f424_out -> f427_in :|: TRUE f427_in -> f427_in :|: TRUE f427_in -> f424_out :|: TRUE f424_out -> f424_out :|: TRUE ---------------------------------------- (156) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (157) Obligation: Rules: f424_out -> f427_in :|: TRUE f427_in -> f427_in :|: TRUE f427_in -> f424_out :|: TRUE f424_out -> f424_out :|: TRUE ---------------------------------------- (158) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f424_out -> f427_in :|: TRUE (2) f427_in -> f427_in :|: TRUE (3) f427_in -> f424_out :|: TRUE (4) f424_out -> f424_out :|: TRUE Arcs: (1) -> (2), (3) (2) -> (2), (3) (3) -> (1), (4) (4) -> (1), (4) This digraph is fully evaluated! ---------------------------------------- (159) Obligation: Termination digraph: Nodes: (1) f424_out -> f427_in :|: TRUE (2) f424_out -> f424_out :|: TRUE (3) f427_in -> f424_out :|: TRUE (4) f427_in -> f427_in :|: TRUE Arcs: (1) -> (3), (4) (2) -> (1), (2) (3) -> (1), (2) (4) -> (3), (4) This digraph is fully evaluated! ---------------------------------------- (160) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f424_out() f427_in() Replaced non-predefined constructor symbols by 0. ---------------------------------------- (161) Obligation: Rules: f424_out -> f427_in :|: TRUE f424_out -> f424_out :|: TRUE f427_in -> f424_out :|: TRUE f427_in -> f427_in :|: TRUE ---------------------------------------- (162) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc) -> f(2) :|: pc = 1 && TRUE f(pc) -> f(1) :|: pc = 1 && TRUE f(pc) -> f(1) :|: pc = 2 && TRUE f(pc) -> f(2) :|: pc = 2 && TRUE Witness term starting non-terminating reduction: f(2) ---------------------------------------- (163) NO ---------------------------------------- (164) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 6, "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", "595": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T68 X94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X94"], "exprvars": [] } }, "596": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "750": { "goal": [{ "clause": 7, "scope": 12, "term": "(merge T251 T250 T224)" }], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "751": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "510": { "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": [] } }, "752": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "511": { "goal": [{ "clause": 1, "scope": 5, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "599": { "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": [] } }, "753": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "512": { "goal": [{ "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": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "755": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "514": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [] } }, "757": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "516": { "goal": [], "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": [] } }, "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": [{ "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": [] } }, "519": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "760": { "goal": [{ "clause": 6, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "761": { "goal": [{ "clause": 7, "scope": 13, "term": "(merge (. T284 T286) T285 T279)" }], "kb": { "nonunifying": [[ "(mergesort T252 (. T284 T279))", "(mergesort (. X174 ([])) (. X174 ([])))" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T279", "T284" ], "free": ["X174"], "exprvars": [] } }, "762": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "763": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "522": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T62 (. T63 T64)) X91 X92)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X91", "X92" ], "exprvars": [] } }, "764": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "6": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T2"], "free": [], "exprvars": [] } }, "523": { "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": [] } }, "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": [] } }, "7": { "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": [] } }, "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": [] } }, "768": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "406": { "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": [] } }, "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": [] } }, "528": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "529": { "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": [] } }, "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": [] } }, "771": { "goal": [{ "clause": 6, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "772": { "goal": [{ "clause": 7, "scope": 14, "term": "(merge (. T316 T318) T317 T311)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T311", "T316" ], "free": [], "exprvars": [] } }, "773": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "774": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "412": { "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": [] } }, "775": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "413": { "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": [] } }, "534": { "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": [] } }, "776": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T339 T344) (merge (. T339 T346) T345 T343))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T339", "T343" ], "free": [], "exprvars": [] } }, "777": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "778": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T348 T350) T349 T343)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T343", "T348" ], "free": [], "exprvars": [] } }, "416": { "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": [] } }, "537": { "goal": [{ "clause": 0, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "779": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "538": { "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": [] } }, "418": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T25 T26) X31 X30)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "419": { "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": [] } }, "384": { "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": [] } }, "386": { "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": [] } }, "541": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "388": { "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": [] } }, "422": { "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": [] } }, "543": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "423": { "goal": [{ "clause": 4, "scope": 3, "term": "(split (. T25 T26) X31 X30)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X30", "X31" ], "exprvars": [] } }, "545": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "425": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "700": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "701": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "548": { "goal": [{ "clause": 1, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "702": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "549": { "goal": [{ "clause": 2, "scope": 6, "term": "(mergesort T65 X93)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X93"], "exprvars": [] } }, "703": { "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": [] } }, "429": { "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": [] } }, "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": 2, "scope": 1, "term": "(mergesort T1 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "550": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "551": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "431": { "goal": [{ "clause": 3, "scope": 4, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "exprvars": [] } }, "552": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "432": { "goal": [{ "clause": 4, "scope": 4, "term": "(split T38 X49 X48)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X48", "X49" ], "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": [] } }, "436": { "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": [] } }, "437": { "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": [] } }, "438": { "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": [] } }, "716": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "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": [] } }, "718": { "goal": [{ "clause": 5, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "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": [] } }, "683": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "684": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "685": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (= T112 T113) (merge (. T112 T115) T114 X153))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X153"], "exprvars": [] } }, "686": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "687": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T119 T120) T118 X153)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X153"], "exprvars": [] } }, "720": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "688": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "721": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "447": { "goal": [{ "clause": -1, "scope": -1, "term": "(split T45 X67 X66)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X66", "X67" ], "exprvars": [] } }, "689": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T47 X13)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X13"], "exprvars": [] } }, "722": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "602": { "goal": [{ "clause": 5, "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": [] } }, "449": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "603": { "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": [] } }, "724": { "goal": [{ "clause": 7, "scope": 10, "term": "(merge T173 T172 (. T148 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T148"], "free": [], "exprvars": [] } }, "604": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "725": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "605": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "726": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "606": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "727": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "607": { "goal": [{ "clause": 6, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "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": [] } }, "608": { "goal": [{ "clause": 7, "scope": 7, "term": "(merge T87 T86 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X95"], "exprvars": [] } }, "729": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "609": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "690": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "691": { "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": [] } }, "692": { "goal": [{ "clause": 5, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "693": { "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": [] } }, "694": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "695": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "696": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "697": { "goal": [{ "clause": 6, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "730": { "goal": [{ "clause": -1, "scope": -1, "term": "(merge (. T214 T216) T215 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T214"], "free": [], "exprvars": [] } }, "577": { "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": [] } }, "698": { "goal": [{ "clause": 7, "scope": 8, "term": "(merge T122 T121 ([]))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "731": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "578": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "699": { "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": [] } }, "733": { "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": [] } }, "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": [] } }, "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": [] } }, "737": { "goal": [{ "clause": -1, "scope": -1, "term": "(split (. T240 T241) X263 X262)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [ "X262", "X263" ], "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": [] } }, "739": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T245 T244) X244)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X244"], "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": [] } }, "741": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort T248 X245)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X245"], "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": [] } }, "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": [] } }, "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": [] } }, "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": [] } }, "507": { "goal": [{ "clause": -1, "scope": -1, "term": "(mergesort (. T30 T29) X12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X12"], "exprvars": [] } }, "749": { "goal": [{ "clause": 6, "scope": 12, "term": "(merge T251 T250 T224)" }], "kb": { "nonunifying": [ [ "(mergesort T252 T224)", "(mergesort ([]) ([]))" ], [ "(mergesort T252 T224)", "(mergesort (. X174 ([])) (. X174 ([])))" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T224"], "free": ["X174"], "exprvars": [] } }, "508": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (mergesort T47 X13) (merge T46 X13 ([])))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": ["X13"], "exprvars": [] } }, "509": { "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": [] } } }, "edges": [ { "from": 6, "to": 7, "label": "CASE" }, { "from": 7, "to": 384, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT1 -> [],\nT2 -> []" }, { "from": 7, "to": 386, "label": "EVAL-BACKTRACK" }, { "from": 384, "to": 388, "label": "SUCCESS" }, { "from": 386, "to": 703, "label": "EVAL with clause\nmergesort(.(X174, []), .(X174, [])).\nand substitutionX174 -> T140,\nT1 -> .(T140, []),\nT2 -> .(T140, [])" }, { "from": 386, "to": 704, "label": "EVAL-BACKTRACK" }, { "from": 388, "to": 391, "label": "BACKTRACK\nfor clause: mergesort(.(X, []), .(X, []))because of non-unification" }, { "from": 391, "to": 406, "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": 391, "to": 409, "label": "EVAL-BACKTRACK" }, { "from": 406, "to": 412, "label": "CASE" }, { "from": 412, "to": 413, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 413, "to": 416, "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": 416, "to": 418, "label": "SPLIT 1" }, { "from": 416, "to": 419, "label": "SPLIT 2\nreplacements:X31 -> T28,\nX30 -> T29,\nT27 -> T30" }, { "from": 418, "to": 422, "label": "CASE" }, { "from": 419, "to": 507, "label": "SPLIT 1" }, { "from": 419, "to": 508, "label": "SPLIT 2\nreplacements:X12 -> T46,\nT28 -> T47" }, { "from": 422, "to": 423, "label": "BACKTRACK\nfor clause: split([], [], [])because of non-unification" }, { "from": 423, "to": 425, "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": 425, "to": 429, "label": "CASE" }, { "from": 429, "to": 431, "label": "PARALLEL" }, { "from": 429, "to": 432, "label": "PARALLEL" }, { "from": 431, "to": 436, "label": "EVAL with clause\nsplit([], [], []).\nand substitutionT38 -> [],\nX49 -> [],\nX48 -> []" }, { "from": 431, "to": 437, "label": "EVAL-BACKTRACK" }, { "from": 432, "to": 447, "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": 432, "to": 449, "label": "EVAL-BACKTRACK" }, { "from": 436, "to": 438, "label": "SUCCESS" }, { "from": 447, "to": 425, "label": "INSTANCE with matching:\nT38 -> T45\nX49 -> X67\nX48 -> X66" }, { "from": 507, "to": 509, "label": "CASE" }, { "from": 508, "to": 689, "label": "SPLIT 1" }, { "from": 508, "to": 690, "label": "SPLIT 2\nreplacements:X13 -> T121,\nT46 -> T122" }, { "from": 509, "to": 510, "label": "BACKTRACK\nfor clause: mergesort([], [])because of non-unification" }, { "from": 510, "to": 511, "label": "PARALLEL" }, { "from": 510, "to": 512, "label": "PARALLEL" }, { "from": 511, "to": 513, "label": "EVAL with clause\nmergesort(.(X72, []), .(X72, [])).\nand substitutionT30 -> T52,\nX72 -> T52,\nT29 -> [],\nX12 -> .(T52, [])" }, { "from": 511, "to": 514, "label": "EVAL-BACKTRACK" }, { "from": 512, "to": 518, "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": 512, "to": 519, "label": "EVAL-BACKTRACK" }, { "from": 513, "to": 516, "label": "SUCCESS" }, { "from": 518, "to": 522, "label": "SPLIT 1" }, { "from": 518, "to": 523, "label": "SPLIT 2\nreplacements:X91 -> T65,\nX92 -> T66" }, { "from": 522, "to": 418, "label": "INSTANCE with matching:\nT25 -> T62\nT26 -> .(T63, T64)\nX31 -> X91\nX30 -> X92" }, { "from": 523, "to": 528, "label": "SPLIT 1" }, { "from": 523, "to": 529, "label": "SPLIT 2\nreplacements:X93 -> T67,\nT66 -> T68" }, { "from": 528, "to": 534, "label": "CASE" }, { "from": 529, "to": 595, "label": "SPLIT 1" }, { "from": 529, "to": 596, "label": "SPLIT 2\nreplacements:X94 -> T86,\nT67 -> T87" }, { "from": 534, "to": 537, "label": "PARALLEL" }, { "from": 534, "to": 538, "label": "PARALLEL" }, { "from": 537, "to": 541, "label": "EVAL with clause\nmergesort([], []).\nand substitutionT65 -> [],\nX93 -> []" }, { "from": 537, "to": 543, "label": "EVAL-BACKTRACK" }, { "from": 538, "to": 548, "label": "PARALLEL" }, { "from": 538, "to": 549, "label": "PARALLEL" }, { "from": 541, "to": 545, "label": "SUCCESS" }, { "from": 548, "to": 550, "label": "EVAL with clause\nmergesort(.(X100, []), .(X100, [])).\nand substitutionX100 -> T73,\nT65 -> .(T73, []),\nX93 -> .(T73, [])" }, { "from": 548, "to": 551, "label": "EVAL-BACKTRACK" }, { "from": 549, "to": 577, "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": 549, "to": 578, "label": "EVAL-BACKTRACK" }, { "from": 550, "to": 552, "label": "SUCCESS" }, { "from": 577, "to": 518, "label": "INSTANCE with matching:\nT62 -> T83\nT63 -> T84\nT64 -> T85\nX91 -> X119\nX92 -> X120\nX93 -> X121\nX94 -> X122\nX95 -> X123" }, { "from": 595, "to": 528, "label": "INSTANCE with matching:\nT65 -> T68\nX93 -> X94" }, { "from": 596, "to": 599, "label": "CASE" }, { "from": 599, "to": 602, "label": "PARALLEL" }, { "from": 599, "to": 603, "label": "PARALLEL" }, { "from": 602, "to": 604, "label": "EVAL with clause\nmerge([], X130, X130).\nand substitutionT87 -> [],\nT86 -> T94,\nX130 -> T94,\nX95 -> T94" }, { "from": 602, "to": 605, "label": "EVAL-BACKTRACK" }, { "from": 603, "to": 607, "label": "PARALLEL" }, { "from": 603, "to": 608, "label": "PARALLEL" }, { "from": 604, "to": 606, "label": "SUCCESS" }, { "from": 607, "to": 609, "label": "EVAL with clause\nmerge(X135, [], X135).\nand substitutionT87 -> T99,\nX135 -> T99,\nT86 -> [],\nX95 -> T99" }, { "from": 607, "to": 683, "label": "EVAL-BACKTRACK" }, { "from": 608, "to": 685, "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": 608, "to": 686, "label": "EVAL-BACKTRACK" }, { "from": 609, "to": 684, "label": "SUCCESS" }, { "from": 685, "to": 687, "label": "UNIFY CASE with substitutionT112 -> T119,\nT113 -> T119,\nT114 -> T118,\nT117 -> T119,\nT115 -> T120" }, { "from": 685, "to": 688, "label": "UNIFY-BACKTRACK" }, { "from": 687, "to": 596, "label": "INSTANCE with matching:\nT87 -> .(T119, T120)\nT86 -> T118\nX95 -> X153" }, { "from": 689, "to": 528, "label": "INSTANCE with matching:\nT65 -> T47\nX93 -> X13" }, { "from": 690, "to": 691, "label": "CASE" }, { "from": 691, "to": 692, "label": "PARALLEL" }, { "from": 691, "to": 693, "label": "PARALLEL" }, { "from": 692, "to": 694, "label": "EVAL with clause\nmerge([], X162, X162).\nand substitutionT122 -> [],\nT121 -> [],\nX162 -> [],\nT129 -> []" }, { "from": 692, "to": 695, "label": "EVAL-BACKTRACK" }, { "from": 693, "to": 697, "label": "PARALLEL" }, { "from": 693, "to": 698, "label": "PARALLEL" }, { "from": 694, "to": 696, "label": "SUCCESS" }, { "from": 697, "to": 699, "label": "EVAL with clause\nmerge(X167, [], X167).\nand substitutionT122 -> [],\nX167 -> [],\nT121 -> [],\nT134 -> []" }, { "from": 697, "to": 700, "label": "EVAL-BACKTRACK" }, { "from": 698, "to": 702, "label": "BACKTRACK\nfor clause: merge(.(X, Xs), .(Y, Ys), .(X, Zs)) :- ','(=(X, Y), merge(.(X, Xs), Ys, Zs))because of non-unification" }, { "from": 699, "to": 701, "label": "SUCCESS" }, { "from": 703, "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": 418, "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": 507, "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": 528, "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": 690, "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": 418, "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": 507, "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": 528, "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": 771, "label": "PARALLEL" }, { "from": 770, "to": 772, "label": "PARALLEL" }, { "from": 771, "to": 773, "label": "EVAL with clause\nmerge(X321, [], X321).\nand substitutionT316 -> T327,\nT318 -> T328,\nX321 -> .(T327, T328),\nT317 -> [],\nT311 -> .(T327, T328)" }, { "from": 771, "to": 774, "label": "EVAL-BACKTRACK" }, { "from": 772, "to": 776, "label": "EVAL with clause\nmerge(.(X332, X333), .(X334, X335), .(X332, X336)) :- ','(=(X332, X334), merge(.(X332, X333), X335, X336)).\nand substitutionT316 -> T339,\nX332 -> T339,\nT318 -> T346,\nX333 -> T346,\nX334 -> T344,\nX335 -> T345,\nT317 -> .(T344, T345),\nX336 -> T343,\nT311 -> .(T339, T343),\nT341 -> T344,\nT342 -> T345,\nT340 -> T346" }, { "from": 772, "to": 777, "label": "EVAL-BACKTRACK" }, { "from": 773, "to": 775, "label": "SUCCESS" }, { "from": 776, "to": 778, "label": "UNIFY CASE with substitutionT339 -> T348,\nT344 -> T348,\nT345 -> T349,\nT346 -> T350" }, { "from": 776, "to": 779, "label": "UNIFY-BACKTRACK" }, { "from": 778, "to": 767, "label": "INSTANCE with matching:\nT316 -> T348\nT318 -> T350\nT317 -> T349\nT311 -> T343" } ], "type": "Graph" } } ---------------------------------------- (165) 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) ---------------------------------------- (166) UndefinedPredicateInTriplesTransformerProof (SOUND) Deleted triples and predicates having undefined goals [DT09]. ---------------------------------------- (167) 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) ---------------------------------------- (168) 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 ---------------------------------------- (169) 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 ---------------------------------------- (170) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 47 less nodes. ---------------------------------------- (171) Complex Obligation (AND) ---------------------------------------- (172) 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 ---------------------------------------- (173) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (174) 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 ---------------------------------------- (175) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (176) 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. ---------------------------------------- (177) 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 ---------------------------------------- (178) YES ---------------------------------------- (179) 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 ---------------------------------------- (180) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (181) 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 ---------------------------------------- (182) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (183) 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. ---------------------------------------- (184) 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 ---------------------------------------- (185) YES ---------------------------------------- (186) 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 ---------------------------------------- (187) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (188) 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 ---------------------------------------- (189) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (190) 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. ---------------------------------------- (191) 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 ---------------------------------------- (192) YES ---------------------------------------- (193) 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 ---------------------------------------- (194) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (195) 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 ---------------------------------------- (196) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (197) 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. ---------------------------------------- (198) 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))))) ---------------------------------------- (199) 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. ---------------------------------------- (200) 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))))) ---------------------------------------- (201) 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. ---------------------------------------- (202) 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 ---------------------------------------- (203) 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. ---------------------------------------- (204) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes. ---------------------------------------- (205) TRUE ---------------------------------------- (206) 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 ---------------------------------------- (207) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (208) 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 ---------------------------------------- (209) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (210) 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.