MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Left Termination of the query pattern s2(g,a) w.r.t. the given Prolog program could not be shown: (0) Prolog (1) PrologToPiTRSProof [SOUND, 0 ms] (2) PiTRS (3) DependencyPairsProof [EQUIVALENT, 0 ms] (4) PiDP (5) DependencyGraphProof [EQUIVALENT, 0 ms] (6) AND (7) PiDP (8) UsableRulesProof [EQUIVALENT, 0 ms] (9) PiDP (10) PiDPToQDPProof [SOUND, 0 ms] (11) QDP (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] (13) YES (14) PiDP (15) UsableRulesProof [EQUIVALENT, 0 ms] (16) PiDP (17) PiDPToQDPProof [EQUIVALENT, 0 ms] (18) QDP (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] (20) YES (21) PiDP (22) PiDPToQDPProof [SOUND, 4 ms] (23) QDP (24) QDPQMonotonicMRRProof [EQUIVALENT, 108 ms] (25) QDP (26) UsableRulesProof [EQUIVALENT, 0 ms] (27) QDP (28) QReductionProof [EQUIVALENT, 0 ms] (29) QDP (30) QDPQMonotonicMRRProof [EQUIVALENT, 43 ms] (31) QDP (32) DependencyGraphProof [EQUIVALENT, 0 ms] (33) QDP (34) UsableRulesProof [EQUIVALENT, 0 ms] (35) QDP (36) QReductionProof [EQUIVALENT, 0 ms] (37) QDP (38) NonTerminationLoopProof [COMPLETE, 0 ms] (39) NO (40) PrologToPiTRSProof [SOUND, 0 ms] (41) PiTRS (42) DependencyPairsProof [EQUIVALENT, 0 ms] (43) PiDP (44) DependencyGraphProof [EQUIVALENT, 0 ms] (45) AND (46) PiDP (47) UsableRulesProof [EQUIVALENT, 0 ms] (48) PiDP (49) PiDPToQDPProof [SOUND, 0 ms] (50) QDP (51) QDPSizeChangeProof [EQUIVALENT, 0 ms] (52) YES (53) PiDP (54) UsableRulesProof [EQUIVALENT, 0 ms] (55) PiDP (56) PiDPToQDPProof [EQUIVALENT, 0 ms] (57) QDP (58) QDPSizeChangeProof [EQUIVALENT, 0 ms] (59) YES (60) PiDP (61) PiDPToQDPProof [SOUND, 5 ms] (62) QDP (63) QDPOrderProof [EQUIVALENT, 52 ms] (64) QDP (65) QDPOrderProof [EQUIVALENT, 32 ms] (66) QDP (67) DependencyGraphProof [EQUIVALENT, 0 ms] (68) QDP (69) UsableRulesProof [EQUIVALENT, 0 ms] (70) QDP (71) QReductionProof [EQUIVALENT, 0 ms] (72) QDP (73) NonTerminationLoopProof [COMPLETE, 0 ms] (74) NO (75) PrologToTRSTransformerProof [SOUND, 39 ms] (76) QTRS (77) DependencyPairsProof [EQUIVALENT, 0 ms] (78) QDP (79) DependencyGraphProof [EQUIVALENT, 0 ms] (80) AND (81) QDP (82) UsableRulesProof [EQUIVALENT, 0 ms] (83) QDP (84) QDPSizeChangeProof [EQUIVALENT, 0 ms] (85) YES (86) QDP (87) UsableRulesProof [EQUIVALENT, 0 ms] (88) QDP (89) QDPSizeChangeProof [EQUIVALENT, 0 ms] (90) YES (91) QDP (92) QDPOrderProof [EQUIVALENT, 109 ms] (93) QDP (94) DependencyGraphProof [EQUIVALENT, 0 ms] (95) QDP (96) UsableRulesProof [EQUIVALENT, 0 ms] (97) QDP (98) NonTerminationLoopProof [COMPLETE, 0 ms] (99) NO (100) PrologToIRSwTTransformerProof [SOUND, 42 ms] (101) AND (102) IRSwT (103) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (104) TRUE (105) IRSwT (106) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (107) IRSwT (108) IntTRSCompressionProof [EQUIVALENT, 21 ms] (109) IRSwT (110) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (111) IRSwT (112) IRSwTTerminationDigraphProof [EQUIVALENT, 2 ms] (113) IRSwT (114) TempFilterProof [SOUND, 3 ms] (115) IRSwT (116) IRSwTToQDPProof [SOUND, 0 ms] (117) QDP (118) QDPSizeChangeProof [EQUIVALENT, 0 ms] (119) YES (120) IRSwT (121) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (122) IRSwT (123) IntTRSCompressionProof [EQUIVALENT, 7 ms] (124) IRSwT (125) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (126) IRSwT (127) IRSwTTerminationDigraphProof [EQUIVALENT, 18 ms] (128) IRSwT (129) PrologToDTProblemTransformerProof [SOUND, 87 ms] (130) TRIPLES (131) UndefinedPredicateInTriplesTransformerProof [SOUND, 0 ms] (132) TRIPLES (133) TriplesToPiDPProof [SOUND, 128 ms] (134) PiDP (135) DependencyGraphProof [EQUIVALENT, 0 ms] (136) AND (137) PiDP (138) UsableRulesProof [EQUIVALENT, 0 ms] (139) PiDP (140) PiDPToQDPProof [SOUND, 0 ms] (141) QDP (142) QDPSizeChangeProof [EQUIVALENT, 0 ms] (143) YES (144) PiDP (145) UsableRulesProof [EQUIVALENT, 0 ms] (146) PiDP (147) PiDPToQDPProof [EQUIVALENT, 0 ms] (148) QDP (149) QDPSizeChangeProof [EQUIVALENT, 0 ms] (150) YES (151) PiDP (152) PiDPToQDPProof [SOUND, 0 ms] (153) QDP (154) QDPOrderProof [EQUIVALENT, 660 ms] (155) QDP (156) DependencyGraphProof [EQUIVALENT, 0 ms] (157) QDP (158) UsableRulesProof [EQUIVALENT, 0 ms] (159) QDP (160) QReductionProof [EQUIVALENT, 0 ms] (161) QDP ---------------------------------------- (0) Obligation: Clauses: s2(plus(A, plus(B, C)), D) :- s2(plus(plus(A, B), C), D). s2(plus(A, B), C) :- s2(plus(B, A), C). s2(plus(X, 0), X). s2(plus(X, Y), Z) :- ','(s2(X, A), ','(s2(Y, B), s2(plus(A, B), Z))). s2(plus(A, B), C) :- ','(isNat(A), ','(isNat(B), add(A, B, C))). isNat(s(X)) :- isNat(X). isNat(0). add(s(X), Y, s(Z)) :- add(X, Y, Z). add(0, X, X). Query: s2(g,a) ---------------------------------------- (1) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: s2_in_2: (b,f) isNat_in_1: (b) add_in_3: (b,b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (2) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) ---------------------------------------- (3) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: Pi DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C)), D) -> U1_GA(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) S2_IN_GA(plus(A, plus(B, C)), D) -> S2_IN_GA(plus(plus(A, B), C), D) S2_IN_GA(plus(A, B), C) -> U2_GA(A, B, C, s2_in_ga(plus(B, A), C)) S2_IN_GA(plus(A, B), C) -> S2_IN_GA(plus(B, A), C) S2_IN_GA(plus(X, Y), Z) -> U3_GA(X, Y, Z, s2_in_ga(X, A)) S2_IN_GA(plus(X, Y), Z) -> S2_IN_GA(X, A) S2_IN_GA(plus(A, B), C) -> U6_GA(A, B, C, isNat_in_g(A)) S2_IN_GA(plus(A, B), C) -> ISNAT_IN_G(A) ISNAT_IN_G(s(X)) -> U9_G(X, isNat_in_g(X)) ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) U6_GA(A, B, C, isNat_out_g(A)) -> U7_GA(A, B, C, isNat_in_g(B)) U6_GA(A, B, C, isNat_out_g(A)) -> ISNAT_IN_G(B) U7_GA(A, B, C, isNat_out_g(B)) -> U8_GA(A, B, C, add_in_gga(A, B, C)) U7_GA(A, B, C, isNat_out_g(B)) -> ADD_IN_GGA(A, B, C) ADD_IN_GGA(s(X), Y, s(Z)) -> U10_GGA(X, Y, Z, add_in_gga(X, Y, Z)) ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> U4_GA(X, Y, Z, A, s2_in_ga(Y, B)) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> S2_IN_GA(Y, B) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_GA(X, Y, Z, s2_in_ga(plus(A, B), Z)) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B), Z) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) S2_IN_GA(x1, x2) = S2_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x1, x2, x3, x5) U2_GA(x1, x2, x3, x4) = U2_GA(x1, x2, x4) U3_GA(x1, x2, x3, x4) = U3_GA(x1, x2, x4) U6_GA(x1, x2, x3, x4) = U6_GA(x1, x2, x4) ISNAT_IN_G(x1) = ISNAT_IN_G(x1) U9_G(x1, x2) = U9_G(x1, x2) U7_GA(x1, x2, x3, x4) = U7_GA(x1, x2, x4) U8_GA(x1, x2, x3, x4) = U8_GA(x1, x2, x4) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) U10_GGA(x1, x2, x3, x4) = U10_GGA(x1, x2, x4) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x1, x2, x4, x5) U5_GA(x1, x2, x3, x4) = U5_GA(x1, x2, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (4) Obligation: Pi DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C)), D) -> U1_GA(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) S2_IN_GA(plus(A, plus(B, C)), D) -> S2_IN_GA(plus(plus(A, B), C), D) S2_IN_GA(plus(A, B), C) -> U2_GA(A, B, C, s2_in_ga(plus(B, A), C)) S2_IN_GA(plus(A, B), C) -> S2_IN_GA(plus(B, A), C) S2_IN_GA(plus(X, Y), Z) -> U3_GA(X, Y, Z, s2_in_ga(X, A)) S2_IN_GA(plus(X, Y), Z) -> S2_IN_GA(X, A) S2_IN_GA(plus(A, B), C) -> U6_GA(A, B, C, isNat_in_g(A)) S2_IN_GA(plus(A, B), C) -> ISNAT_IN_G(A) ISNAT_IN_G(s(X)) -> U9_G(X, isNat_in_g(X)) ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) U6_GA(A, B, C, isNat_out_g(A)) -> U7_GA(A, B, C, isNat_in_g(B)) U6_GA(A, B, C, isNat_out_g(A)) -> ISNAT_IN_G(B) U7_GA(A, B, C, isNat_out_g(B)) -> U8_GA(A, B, C, add_in_gga(A, B, C)) U7_GA(A, B, C, isNat_out_g(B)) -> ADD_IN_GGA(A, B, C) ADD_IN_GGA(s(X), Y, s(Z)) -> U10_GGA(X, Y, Z, add_in_gga(X, Y, Z)) ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> U4_GA(X, Y, Z, A, s2_in_ga(Y, B)) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> S2_IN_GA(Y, B) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_GA(X, Y, Z, s2_in_ga(plus(A, B), Z)) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B), Z) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) S2_IN_GA(x1, x2) = S2_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x1, x2, x3, x5) U2_GA(x1, x2, x3, x4) = U2_GA(x1, x2, x4) U3_GA(x1, x2, x3, x4) = U3_GA(x1, x2, x4) U6_GA(x1, x2, x3, x4) = U6_GA(x1, x2, x4) ISNAT_IN_G(x1) = ISNAT_IN_G(x1) U9_G(x1, x2) = U9_G(x1, x2) U7_GA(x1, x2, x3, x4) = U7_GA(x1, x2, x4) U8_GA(x1, x2, x3, x4) = U8_GA(x1, x2, x4) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) U10_GGA(x1, x2, x3, x4) = U10_GGA(x1, x2, x4) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x1, x2, x4, x5) U5_GA(x1, x2, x3, x4) = U5_GA(x1, x2, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (5) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 11 less nodes. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: Pi DP problem: The TRS P consists of the following rules: ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (8) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (9) Obligation: Pi DP problem: The TRS P consists of the following rules: ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (10) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (11) Obligation: Q DP problem: The TRS P consists of the following rules: ADD_IN_GGA(s(X), Y) -> ADD_IN_GGA(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (12) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *ADD_IN_GGA(s(X), Y) -> ADD_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) ISNAT_IN_G(x1) = ISNAT_IN_G(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (15) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (16) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (17) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (18) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (19) 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: *ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) The graph contains the following edges 1 > 1 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: Pi DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B), C) -> S2_IN_GA(plus(B, A), C) S2_IN_GA(plus(A, plus(B, C)), D) -> S2_IN_GA(plus(plus(A, B), C), D) S2_IN_GA(plus(X, Y), Z) -> U3_GA(X, Y, Z, s2_in_ga(X, A)) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> U4_GA(X, Y, Z, A, s2_in_ga(Y, B)) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B), Z) S2_IN_GA(plus(X, Y), Z) -> S2_IN_GA(X, A) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> S2_IN_GA(Y, B) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x1, x2, x3, x5) U2_ga(x1, x2, x3, x4) = U2_ga(x1, x2, x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x1, x2) U3_ga(x1, x2, x3, x4) = U3_ga(x1, x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x1, x2) isNat_out_g(x1) = isNat_out_g(x1) U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x1, x2, x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x1, x2, x4) add_out_gga(x1, x2, x3) = add_out_gga(x1, x2, x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x1, x2, x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x1, x2, x4) S2_IN_GA(x1, x2) = S2_IN_GA(x1) U3_GA(x1, x2, x3, x4) = U3_GA(x1, x2, x4) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x1, x2, x4, x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (22) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (23) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(X, Y, s2_in_ga(X)) U3_GA(X, Y, s2_out_ga(X, A)) -> U4_GA(X, Y, A, s2_in_ga(Y)) U4_GA(X, Y, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B)) S2_IN_GA(plus(X, Y)) -> S2_IN_GA(X) U3_GA(X, Y, s2_out_ga(X, A)) -> S2_IN_GA(Y) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(A, B, C, s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(A, B, s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y)) -> U3_ga(X, Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, isNat_out_g(A)) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g(B)) -> U8_ga(A, B, add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(X, Y, add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(0, X, X) U10_gga(X, Y, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, s2_out_ga(X, A)) -> U4_ga(X, Y, A, s2_in_ga(Y)) U4_ga(X, Y, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, s2_in_ga(plus(A, B))) U5_ga(X, Y, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0, x1, x2) U8_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (24) 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: S2_IN_GA(plus(X, Y)) -> S2_IN_GA(X) U3_GA(X, Y, s2_out_ga(X, A)) -> S2_IN_GA(Y) Strictly oriented rules of the TRS R: s2_in_ga(plus(X, 0)) -> s2_out_ga(plus(X, 0), X) U7_ga(A, B, isNat_out_g(B)) -> U8_ga(A, B, add_in_gga(A, B)) Used ordering: Polynomial interpretation [POLO]: POL(0) = 0 POL(S2_IN_GA(x_1)) = 2*x_1 POL(U10_gga(x_1, x_2, x_3)) = 0 POL(U1_ga(x_1, x_2, x_3, x_4)) = x_4 POL(U2_ga(x_1, x_2, x_3)) = x_3 POL(U3_GA(x_1, x_2, x_3)) = 2 + 2*x_2 + 2*x_3 POL(U3_ga(x_1, x_2, x_3)) = 1 + x_2 + x_3 POL(U4_GA(x_1, x_2, x_3, x_4)) = 2 + 2*x_3 + 2*x_4 POL(U4_ga(x_1, x_2, x_3, x_4)) = 1 + x_3 + x_4 POL(U5_ga(x_1, x_2, x_3)) = x_3 POL(U6_ga(x_1, x_2, x_3)) = 1 + x_1 POL(U7_ga(x_1, x_2, x_3)) = 1 + 2*x_3 POL(U8_ga(x_1, x_2, x_3)) = 2*x_3 POL(U9_g(x_1, x_2)) = 0 POL(add_in_gga(x_1, x_2)) = x_2 POL(add_out_gga(x_1, x_2, x_3)) = x_3 POL(isNat_in_g(x_1)) = 0 POL(isNat_out_g(x_1)) = x_1 POL(plus(x_1, x_2)) = 1 + x_1 + x_2 POL(s(x_1)) = 0 POL(s2_in_ga(x_1)) = x_1 POL(s2_out_ga(x_1, x_2)) = x_2 ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(X, Y, s2_in_ga(X)) U3_GA(X, Y, s2_out_ga(X, A)) -> U4_GA(X, Y, A, s2_in_ga(Y)) U4_GA(X, Y, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(A, B, C, s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(A, B, s2_in_ga(plus(B, A))) s2_in_ga(plus(X, Y)) -> U3_ga(X, Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, isNat_out_g(A)) -> U7_ga(A, B, isNat_in_g(B)) add_in_gga(s(X), Y) -> U10_gga(X, Y, add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(0, X, X) U10_gga(X, Y, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, s2_out_ga(X, A)) -> U4_ga(X, Y, A, s2_in_ga(Y)) U4_ga(X, Y, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, s2_in_ga(plus(A, B))) U5_ga(X, Y, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0, x1, x2) U8_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (26) 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. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(X, Y, s2_in_ga(X)) U3_GA(X, Y, s2_out_ga(X, A)) -> U4_GA(X, Y, A, s2_in_ga(Y)) U4_GA(X, Y, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(A, B, C, s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(A, B, s2_in_ga(plus(B, A))) s2_in_ga(plus(X, Y)) -> U3_ga(X, Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U6_ga(A, B, isNat_out_g(A)) -> U7_ga(A, B, isNat_in_g(B)) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U3_ga(X, Y, s2_out_ga(X, A)) -> U4_ga(X, Y, A, s2_in_ga(Y)) U4_ga(X, Y, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, s2_in_ga(plus(A, B))) U5_ga(X, Y, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0, x1, x2) U8_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (28) 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]. add_in_gga(x0, x1) U10_gga(x0, x1, x2) U8_ga(x0, x1, x2) ---------------------------------------- (29) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(X, Y, s2_in_ga(X)) U3_GA(X, Y, s2_out_ga(X, A)) -> U4_GA(X, Y, A, s2_in_ga(Y)) U4_GA(X, Y, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(A, B, C, s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(A, B, s2_in_ga(plus(B, A))) s2_in_ga(plus(X, Y)) -> U3_ga(X, Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U6_ga(A, B, isNat_out_g(A)) -> U7_ga(A, B, isNat_in_g(B)) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U3_ga(X, Y, s2_out_ga(X, A)) -> U4_ga(X, Y, A, s2_in_ga(Y)) U4_ga(X, Y, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, s2_in_ga(plus(A, B))) U5_ga(X, Y, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (30) QDPQMonotonicMRRProof (EQUIVALENT) By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. Strictly oriented dependency pairs: U3_GA(X, Y, s2_out_ga(X, A)) -> U4_GA(X, Y, A, s2_in_ga(Y)) Used ordering: Polynomial interpretation [POLO]: POL(0) = 2 POL(S2_IN_GA(x_1)) = 1 POL(U1_ga(x_1, x_2, x_3, x_4)) = 2*x_4 POL(U2_ga(x_1, x_2, x_3)) = x_3 POL(U3_GA(x_1, x_2, x_3)) = 1 POL(U3_ga(x_1, x_2, x_3)) = 2*x_3 POL(U4_GA(x_1, x_2, x_3, x_4)) = x_4 POL(U4_ga(x_1, x_2, x_3, x_4)) = 2 POL(U5_ga(x_1, x_2, x_3)) = 1 + x_3 POL(U6_ga(x_1, x_2, x_3)) = 0 POL(U7_ga(x_1, x_2, x_3)) = 0 POL(U9_g(x_1, x_2)) = 2 + 2*x_1 POL(isNat_in_g(x_1)) = 2*x_1 POL(isNat_out_g(x_1)) = 0 POL(plus(x_1, x_2)) = 0 POL(s(x_1)) = 1 + 2*x_1 POL(s2_in_ga(x_1)) = 0 POL(s2_out_ga(x_1, x_2)) = 1 ---------------------------------------- (31) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(X, Y, s2_in_ga(X)) U4_GA(X, Y, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(A, B, C, s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(A, B, s2_in_ga(plus(B, A))) s2_in_ga(plus(X, Y)) -> U3_ga(X, Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U6_ga(A, B, isNat_out_g(A)) -> U7_ga(A, B, isNat_in_g(B)) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U3_ga(X, Y, s2_out_ga(X, A)) -> U4_ga(X, Y, A, s2_in_ga(Y)) U4_ga(X, Y, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, s2_in_ga(plus(A, B))) U5_ga(X, Y, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (32) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. ---------------------------------------- (33) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(A, B, C, s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(A, B, s2_in_ga(plus(B, A))) s2_in_ga(plus(X, Y)) -> U3_ga(X, Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U6_ga(A, B, isNat_out_g(A)) -> U7_ga(A, B, isNat_in_g(B)) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U3_ga(X, Y, s2_out_ga(X, A)) -> U4_ga(X, Y, A, s2_in_ga(Y)) U4_ga(X, Y, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, s2_in_ga(plus(A, B))) U5_ga(X, Y, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (34) 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. ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) R is empty. The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) We have to consider all (P,Q,R)-chains. ---------------------------------------- (36) 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]. s2_in_ga(x0) isNat_in_g(x0) U9_g(x0, x1) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) U3_ga(x0, x1, x2) U4_ga(x0, x1, x2, x3) U5_ga(x0, x1, x2) U2_ga(x0, x1, x2) U1_ga(x0, x1, x2, x3) ---------------------------------------- (37) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (38) 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 = S2_IN_GA(plus(A, B)) evaluates to t =S2_IN_GA(plus(B, A)) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [A / B, B / A] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from S2_IN_GA(plus(A, B)) to S2_IN_GA(plus(B, A)). ---------------------------------------- (39) NO ---------------------------------------- (40) PrologToPiTRSProof (SOUND) We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: s2_in_2: (b,f) isNat_in_1: (b) add_in_3: (b,b,f) Transforming Prolog into the following Term Rewriting System: Pi-finite rewrite system: The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog ---------------------------------------- (41) Obligation: Pi-finite rewrite system: The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) ---------------------------------------- (42) 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: S2_IN_GA(plus(A, plus(B, C)), D) -> U1_GA(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) S2_IN_GA(plus(A, plus(B, C)), D) -> S2_IN_GA(plus(plus(A, B), C), D) S2_IN_GA(plus(A, B), C) -> U2_GA(A, B, C, s2_in_ga(plus(B, A), C)) S2_IN_GA(plus(A, B), C) -> S2_IN_GA(plus(B, A), C) S2_IN_GA(plus(X, Y), Z) -> U3_GA(X, Y, Z, s2_in_ga(X, A)) S2_IN_GA(plus(X, Y), Z) -> S2_IN_GA(X, A) S2_IN_GA(plus(A, B), C) -> U6_GA(A, B, C, isNat_in_g(A)) S2_IN_GA(plus(A, B), C) -> ISNAT_IN_G(A) ISNAT_IN_G(s(X)) -> U9_G(X, isNat_in_g(X)) ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) U6_GA(A, B, C, isNat_out_g(A)) -> U7_GA(A, B, C, isNat_in_g(B)) U6_GA(A, B, C, isNat_out_g(A)) -> ISNAT_IN_G(B) U7_GA(A, B, C, isNat_out_g(B)) -> U8_GA(A, B, C, add_in_gga(A, B, C)) U7_GA(A, B, C, isNat_out_g(B)) -> ADD_IN_GGA(A, B, C) ADD_IN_GGA(s(X), Y, s(Z)) -> U10_GGA(X, Y, Z, add_in_gga(X, Y, Z)) ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> U4_GA(X, Y, Z, A, s2_in_ga(Y, B)) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> S2_IN_GA(Y, B) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_GA(X, Y, Z, s2_in_ga(plus(A, B), Z)) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B), Z) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) S2_IN_GA(x1, x2) = S2_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x5) U2_GA(x1, x2, x3, x4) = U2_GA(x4) U3_GA(x1, x2, x3, x4) = U3_GA(x2, x4) U6_GA(x1, x2, x3, x4) = U6_GA(x1, x2, x4) ISNAT_IN_G(x1) = ISNAT_IN_G(x1) U9_G(x1, x2) = U9_G(x2) U7_GA(x1, x2, x3, x4) = U7_GA(x1, x2, x4) U8_GA(x1, x2, x3, x4) = U8_GA(x4) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) U10_GGA(x1, x2, x3, x4) = U10_GGA(x4) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x4, x5) U5_GA(x1, x2, x3, x4) = U5_GA(x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (43) Obligation: Pi DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C)), D) -> U1_GA(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) S2_IN_GA(plus(A, plus(B, C)), D) -> S2_IN_GA(plus(plus(A, B), C), D) S2_IN_GA(plus(A, B), C) -> U2_GA(A, B, C, s2_in_ga(plus(B, A), C)) S2_IN_GA(plus(A, B), C) -> S2_IN_GA(plus(B, A), C) S2_IN_GA(plus(X, Y), Z) -> U3_GA(X, Y, Z, s2_in_ga(X, A)) S2_IN_GA(plus(X, Y), Z) -> S2_IN_GA(X, A) S2_IN_GA(plus(A, B), C) -> U6_GA(A, B, C, isNat_in_g(A)) S2_IN_GA(plus(A, B), C) -> ISNAT_IN_G(A) ISNAT_IN_G(s(X)) -> U9_G(X, isNat_in_g(X)) ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) U6_GA(A, B, C, isNat_out_g(A)) -> U7_GA(A, B, C, isNat_in_g(B)) U6_GA(A, B, C, isNat_out_g(A)) -> ISNAT_IN_G(B) U7_GA(A, B, C, isNat_out_g(B)) -> U8_GA(A, B, C, add_in_gga(A, B, C)) U7_GA(A, B, C, isNat_out_g(B)) -> ADD_IN_GGA(A, B, C) ADD_IN_GGA(s(X), Y, s(Z)) -> U10_GGA(X, Y, Z, add_in_gga(X, Y, Z)) ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> U4_GA(X, Y, Z, A, s2_in_ga(Y, B)) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> S2_IN_GA(Y, B) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_GA(X, Y, Z, s2_in_ga(plus(A, B), Z)) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B), Z) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) S2_IN_GA(x1, x2) = S2_IN_GA(x1) U1_GA(x1, x2, x3, x4, x5) = U1_GA(x5) U2_GA(x1, x2, x3, x4) = U2_GA(x4) U3_GA(x1, x2, x3, x4) = U3_GA(x2, x4) U6_GA(x1, x2, x3, x4) = U6_GA(x1, x2, x4) ISNAT_IN_G(x1) = ISNAT_IN_G(x1) U9_G(x1, x2) = U9_G(x2) U7_GA(x1, x2, x3, x4) = U7_GA(x1, x2, x4) U8_GA(x1, x2, x3, x4) = U8_GA(x4) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) U10_GGA(x1, x2, x3, x4) = U10_GGA(x4) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x4, x5) U5_GA(x1, x2, x3, x4) = U5_GA(x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (44) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 11 less nodes. ---------------------------------------- (45) Complex Obligation (AND) ---------------------------------------- (46) Obligation: Pi DP problem: The TRS P consists of the following rules: ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (47) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (48) Obligation: Pi DP problem: The TRS P consists of the following rules: ADD_IN_GGA(s(X), Y, s(Z)) -> ADD_IN_GGA(X, Y, Z) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) ADD_IN_GGA(x1, x2, x3) = ADD_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (49) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: ADD_IN_GGA(s(X), Y) -> ADD_IN_GGA(X, Y) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (51) 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: *ADD_IN_GGA(s(X), Y) -> ADD_IN_GGA(X, Y) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (52) YES ---------------------------------------- (53) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) ISNAT_IN_G(x1) = ISNAT_IN_G(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (54) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (55) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (56) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (57) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (58) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) The graph contains the following edges 1 > 1 ---------------------------------------- (59) YES ---------------------------------------- (60) Obligation: Pi DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B), C) -> S2_IN_GA(plus(B, A), C) S2_IN_GA(plus(A, plus(B, C)), D) -> S2_IN_GA(plus(plus(A, B), C), D) S2_IN_GA(plus(X, Y), Z) -> U3_GA(X, Y, Z, s2_in_ga(X, A)) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> U4_GA(X, Y, Z, A, s2_in_ga(Y, B)) U4_GA(X, Y, Z, A, s2_out_ga(Y, B)) -> S2_IN_GA(plus(A, B), Z) S2_IN_GA(plus(X, Y), Z) -> S2_IN_GA(X, A) U3_GA(X, Y, Z, s2_out_ga(X, A)) -> S2_IN_GA(Y, B) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C)), D) -> U1_ga(A, B, C, D, s2_in_ga(plus(plus(A, B), C), D)) s2_in_ga(plus(A, B), C) -> U2_ga(A, B, C, s2_in_ga(plus(B, A), C)) s2_in_ga(plus(X, 0), X) -> s2_out_ga(plus(X, 0), X) s2_in_ga(plus(X, Y), Z) -> U3_ga(X, Y, Z, s2_in_ga(X, A)) s2_in_ga(plus(A, B), C) -> U6_ga(A, B, C, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(X, isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g(0) U9_g(X, isNat_out_g(X)) -> isNat_out_g(s(X)) U6_ga(A, B, C, isNat_out_g(A)) -> U7_ga(A, B, C, isNat_in_g(B)) U7_ga(A, B, C, isNat_out_g(B)) -> U8_ga(A, B, C, add_in_gga(A, B, C)) add_in_gga(s(X), Y, s(Z)) -> U10_gga(X, Y, Z, add_in_gga(X, Y, Z)) add_in_gga(0, X, X) -> add_out_gga(0, X, X) U10_gga(X, Y, Z, add_out_gga(X, Y, Z)) -> add_out_gga(s(X), Y, s(Z)) U8_ga(A, B, C, add_out_gga(A, B, C)) -> s2_out_ga(plus(A, B), C) U3_ga(X, Y, Z, s2_out_ga(X, A)) -> U4_ga(X, Y, Z, A, s2_in_ga(Y, B)) U4_ga(X, Y, Z, A, s2_out_ga(Y, B)) -> U5_ga(X, Y, Z, s2_in_ga(plus(A, B), Z)) U5_ga(X, Y, Z, s2_out_ga(plus(A, B), Z)) -> s2_out_ga(plus(X, Y), Z) U2_ga(A, B, C, s2_out_ga(plus(B, A), C)) -> s2_out_ga(plus(A, B), C) U1_ga(A, B, C, D, s2_out_ga(plus(plus(A, B), C), D)) -> s2_out_ga(plus(A, plus(B, C)), D) The argument filtering Pi contains the following mapping: s2_in_ga(x1, x2) = s2_in_ga(x1) plus(x1, x2) = plus(x1, x2) U1_ga(x1, x2, x3, x4, x5) = U1_ga(x5) U2_ga(x1, x2, x3, x4) = U2_ga(x4) 0 = 0 s2_out_ga(x1, x2) = s2_out_ga(x2) U3_ga(x1, x2, x3, x4) = U3_ga(x2, x4) U6_ga(x1, x2, x3, x4) = U6_ga(x1, x2, x4) isNat_in_g(x1) = isNat_in_g(x1) s(x1) = s(x1) U9_g(x1, x2) = U9_g(x2) isNat_out_g(x1) = isNat_out_g U7_ga(x1, x2, x3, x4) = U7_ga(x1, x2, x4) U8_ga(x1, x2, x3, x4) = U8_ga(x4) add_in_gga(x1, x2, x3) = add_in_gga(x1, x2) U10_gga(x1, x2, x3, x4) = U10_gga(x4) add_out_gga(x1, x2, x3) = add_out_gga(x3) U4_ga(x1, x2, x3, x4, x5) = U4_ga(x4, x5) U5_ga(x1, x2, x3, x4) = U5_ga(x4) S2_IN_GA(x1, x2) = S2_IN_GA(x1) U3_GA(x1, x2, x3, x4) = U3_GA(x2, x4) U4_GA(x1, x2, x3, x4, x5) = U4_GA(x4, x5) We have to consider all (P,R,Pi)-chains ---------------------------------------- (61) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (62) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(Y, s2_in_ga(X)) U3_GA(Y, s2_out_ga(A)) -> U4_GA(A, s2_in_ga(Y)) U4_GA(A, s2_out_ga(B)) -> S2_IN_GA(plus(A, B)) S2_IN_GA(plus(X, Y)) -> S2_IN_GA(X) U3_GA(Y, s2_out_ga(A)) -> S2_IN_GA(Y) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(X) s2_in_ga(plus(X, Y)) -> U3_ga(Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g U9_g(isNat_out_g) -> isNat_out_g U6_ga(A, B, isNat_out_g) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g) -> U8_ga(add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(X) U10_gga(add_out_gga(Z)) -> add_out_gga(s(Z)) U8_ga(add_out_gga(C)) -> s2_out_ga(C) U3_ga(Y, s2_out_ga(A)) -> U4_ga(A, s2_in_ga(Y)) U4_ga(A, s2_out_ga(B)) -> U5_ga(s2_in_ga(plus(A, B))) U5_ga(s2_out_ga(Z)) -> s2_out_ga(Z) U2_ga(s2_out_ga(C)) -> s2_out_ga(C) U1_ga(s2_out_ga(D)) -> s2_out_ga(D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0) U8_ga(x0) U3_ga(x0, x1) U4_ga(x0, x1) U5_ga(x0) U2_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (63) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. S2_IN_GA(plus(X, Y)) -> S2_IN_GA(X) U3_GA(Y, s2_out_ga(A)) -> S2_IN_GA(Y) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U3_GA_2(x_1, x_2) ) = 2x_1 + 2x_2 + 1 POL( U4_GA_2(x_1, x_2) ) = 2x_1 + 2x_2 + 1 POL( s2_in_ga_1(x_1) ) = max{0, x_1 - 1} POL( plus_2(x_1, x_2) ) = x_1 + x_2 + 1 POL( U1_ga_1(x_1) ) = x_1 POL( U2_ga_1(x_1) ) = x_1 POL( 0 ) = 0 POL( s2_out_ga_1(x_1) ) = x_1 POL( U3_ga_2(x_1, x_2) ) = x_1 + x_2 POL( U6_ga_3(x_1, ..., x_3) ) = x_2 POL( isNat_in_g_1(x_1) ) = 0 POL( U4_ga_2(x_1, x_2) ) = x_1 + x_2 POL( U5_ga_1(x_1) ) = x_1 POL( U7_ga_3(x_1, ..., x_3) ) = x_2 POL( s_1(x_1) ) = 0 POL( U9_g_1(x_1) ) = max{0, -2} POL( isNat_out_g ) = 0 POL( U8_ga_1(x_1) ) = x_1 POL( add_in_gga_2(x_1, x_2) ) = x_2 POL( U10_gga_1(x_1) ) = max{0, -2} POL( add_out_gga_1(x_1) ) = x_1 POL( S2_IN_GA_1(x_1) ) = max{0, 2x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(X) s2_in_ga(plus(X, Y)) -> U3_ga(Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) U2_ga(s2_out_ga(C)) -> s2_out_ga(C) U1_ga(s2_out_ga(D)) -> s2_out_ga(D) U3_ga(Y, s2_out_ga(A)) -> U4_ga(A, s2_in_ga(Y)) U4_ga(A, s2_out_ga(B)) -> U5_ga(s2_in_ga(plus(A, B))) U5_ga(s2_out_ga(Z)) -> s2_out_ga(Z) U6_ga(A, B, isNat_out_g) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g) -> U8_ga(add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(X) U8_ga(add_out_gga(C)) -> s2_out_ga(C) U10_gga(add_out_gga(Z)) -> add_out_gga(s(Z)) ---------------------------------------- (64) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(Y, s2_in_ga(X)) U3_GA(Y, s2_out_ga(A)) -> U4_GA(A, s2_in_ga(Y)) U4_GA(A, s2_out_ga(B)) -> S2_IN_GA(plus(A, B)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(X) s2_in_ga(plus(X, Y)) -> U3_ga(Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g U9_g(isNat_out_g) -> isNat_out_g U6_ga(A, B, isNat_out_g) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g) -> U8_ga(add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(X) U10_gga(add_out_gga(Z)) -> add_out_gga(s(Z)) U8_ga(add_out_gga(C)) -> s2_out_ga(C) U3_ga(Y, s2_out_ga(A)) -> U4_ga(A, s2_in_ga(Y)) U4_ga(A, s2_out_ga(B)) -> U5_ga(s2_in_ga(plus(A, B))) U5_ga(s2_out_ga(Z)) -> s2_out_ga(Z) U2_ga(s2_out_ga(C)) -> s2_out_ga(C) U1_ga(s2_out_ga(D)) -> s2_out_ga(D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0) U8_ga(x0) U3_ga(x0, x1) U4_ga(x0, x1) U5_ga(x0) U2_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (65) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U3_GA(Y, s2_out_ga(A)) -> U4_GA(A, s2_in_ga(Y)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U3_GA_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U4_GA_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( s2_in_ga_1(x_1) ) = x_1 POL( plus_2(x_1, x_2) ) = x_1 + x_2 POL( U1_ga_1(x_1) ) = x_1 POL( U2_ga_1(x_1) ) = x_1 POL( 0 ) = 2 POL( s2_out_ga_1(x_1) ) = x_1 + 1 POL( U3_ga_2(x_1, x_2) ) = x_1 + x_2 POL( U6_ga_3(x_1, ..., x_3) ) = x_1 + x_2 POL( isNat_in_g_1(x_1) ) = 0 POL( U4_ga_2(x_1, x_2) ) = x_1 + x_2 POL( U5_ga_1(x_1) ) = x_1 POL( U7_ga_3(x_1, ..., x_3) ) = x_1 + x_2 POL( s_1(x_1) ) = x_1 + 2 POL( U9_g_1(x_1) ) = max{0, -2} POL( isNat_out_g ) = 0 POL( U8_ga_1(x_1) ) = x_1 POL( add_in_gga_2(x_1, x_2) ) = x_1 + x_2 POL( U10_gga_1(x_1) ) = x_1 + 2 POL( add_out_gga_1(x_1) ) = x_1 + 2 POL( S2_IN_GA_1(x_1) ) = 2x_1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(X) s2_in_ga(plus(X, Y)) -> U3_ga(Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) U2_ga(s2_out_ga(C)) -> s2_out_ga(C) U1_ga(s2_out_ga(D)) -> s2_out_ga(D) U3_ga(Y, s2_out_ga(A)) -> U4_ga(A, s2_in_ga(Y)) U4_ga(A, s2_out_ga(B)) -> U5_ga(s2_in_ga(plus(A, B))) U5_ga(s2_out_ga(Z)) -> s2_out_ga(Z) U6_ga(A, B, isNat_out_g) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g) -> U8_ga(add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(X) U8_ga(add_out_gga(C)) -> s2_out_ga(C) U10_gga(add_out_gga(Z)) -> add_out_gga(s(Z)) ---------------------------------------- (66) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(X, Y)) -> U3_GA(Y, s2_in_ga(X)) U4_GA(A, s2_out_ga(B)) -> S2_IN_GA(plus(A, B)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(X) s2_in_ga(plus(X, Y)) -> U3_ga(Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g U9_g(isNat_out_g) -> isNat_out_g U6_ga(A, B, isNat_out_g) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g) -> U8_ga(add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(X) U10_gga(add_out_gga(Z)) -> add_out_gga(s(Z)) U8_ga(add_out_gga(C)) -> s2_out_ga(C) U3_ga(Y, s2_out_ga(A)) -> U4_ga(A, s2_in_ga(Y)) U4_ga(A, s2_out_ga(B)) -> U5_ga(s2_in_ga(plus(A, B))) U5_ga(s2_out_ga(Z)) -> s2_out_ga(Z) U2_ga(s2_out_ga(C)) -> s2_out_ga(C) U1_ga(s2_out_ga(D)) -> s2_out_ga(D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0) U8_ga(x0) U3_ga(x0, x1) U4_ga(x0, x1) U5_ga(x0) U2_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (67) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. ---------------------------------------- (68) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) The TRS R consists of the following rules: s2_in_ga(plus(A, plus(B, C))) -> U1_ga(s2_in_ga(plus(plus(A, B), C))) s2_in_ga(plus(A, B)) -> U2_ga(s2_in_ga(plus(B, A))) s2_in_ga(plus(X, 0)) -> s2_out_ga(X) s2_in_ga(plus(X, Y)) -> U3_ga(Y, s2_in_ga(X)) s2_in_ga(plus(A, B)) -> U6_ga(A, B, isNat_in_g(A)) isNat_in_g(s(X)) -> U9_g(isNat_in_g(X)) isNat_in_g(0) -> isNat_out_g U9_g(isNat_out_g) -> isNat_out_g U6_ga(A, B, isNat_out_g) -> U7_ga(A, B, isNat_in_g(B)) U7_ga(A, B, isNat_out_g) -> U8_ga(add_in_gga(A, B)) add_in_gga(s(X), Y) -> U10_gga(add_in_gga(X, Y)) add_in_gga(0, X) -> add_out_gga(X) U10_gga(add_out_gga(Z)) -> add_out_gga(s(Z)) U8_ga(add_out_gga(C)) -> s2_out_ga(C) U3_ga(Y, s2_out_ga(A)) -> U4_ga(A, s2_in_ga(Y)) U4_ga(A, s2_out_ga(B)) -> U5_ga(s2_in_ga(plus(A, B))) U5_ga(s2_out_ga(Z)) -> s2_out_ga(Z) U2_ga(s2_out_ga(C)) -> s2_out_ga(C) U1_ga(s2_out_ga(D)) -> s2_out_ga(D) The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0) U8_ga(x0) U3_ga(x0, x1) U4_ga(x0, x1) U5_ga(x0) U2_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (69) 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. ---------------------------------------- (70) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) R is empty. The set Q consists of the following terms: s2_in_ga(x0) isNat_in_g(x0) U9_g(x0) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0) U8_ga(x0) U3_ga(x0, x1) U4_ga(x0, x1) U5_ga(x0) U2_ga(x0) U1_ga(x0) We have to consider all (P,Q,R)-chains. ---------------------------------------- (71) 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]. s2_in_ga(x0) isNat_in_g(x0) U9_g(x0) U6_ga(x0, x1, x2) U7_ga(x0, x1, x2) add_in_gga(x0, x1) U10_gga(x0) U8_ga(x0) U3_ga(x0, x1) U4_ga(x0, x1) U5_ga(x0) U2_ga(x0) U1_ga(x0) ---------------------------------------- (72) Obligation: Q DP problem: The TRS P consists of the following rules: S2_IN_GA(plus(A, plus(B, C))) -> S2_IN_GA(plus(plus(A, B), C)) S2_IN_GA(plus(A, B)) -> S2_IN_GA(plus(B, A)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (73) 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 = S2_IN_GA(plus(A, B)) evaluates to t =S2_IN_GA(plus(B, A)) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [A / B, B / A] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from S2_IN_GA(plus(A, B)) to S2_IN_GA(plus(B, A)). ---------------------------------------- (74) NO ---------------------------------------- (75) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 3, "program": { "directives": [], "clauses": [ [ "(s2 (plus A (plus B C)) D)", "(s2 (plus (plus A B) C) D)" ], [ "(s2 (plus A B) C)", "(s2 (plus B A) C)" ], [ "(s2 (plus X (0)) X)", null ], [ "(s2 (plus X Y) Z)", "(',' (s2 X A) (',' (s2 Y B) (s2 (plus A B) Z)))" ], [ "(s2 (plus A B) C)", "(',' (isNat A) (',' (isNat B) (add A B C)))" ], [ "(isNat (s X))", "(isNat X)" ], [ "(isNat (0))", null ], [ "(add (s X) Y (s Z))", "(add X Y Z)" ], [ "(add (0) X X)", null ] ] }, "graph": { "nodes": { "27": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus (plus T19 T20) T21) T23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T19", "T20", "T21" ], "free": [], "exprvars": [] } }, "190": { "goal": [ { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "191": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "192": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "193": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes", "196": { "goal": [{ "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "350": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T95) (add T94 T95 T97))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "175": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T42 T41) T44)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T41", "T42" ], "free": [], "exprvars": [] } }, "197": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "451": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "210": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T67 X69) (s2 (plus T73 X69) T69))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T67", "T73" ], "free": ["X69"], "exprvars": [] } }, "452": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "453": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "179": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "355": { "goal": [ { "clause": 5, "scope": 2, "term": "(isNat T94)" }, { "clause": 6, "scope": 2, "term": "(isNat T94)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "434": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "314": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T67 X69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T67"], "free": ["X69"], "exprvars": [] } }, "358": { "goal": [{ "clause": 5, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "435": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "315": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T73 T80) T69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T73", "T80" ], "free": [], "exprvars": [] } }, "359": { "goal": [{ "clause": 6, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "436": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "338": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T94) (',' (isNat T95) (add T94 T95 T97)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "437": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T95"], "free": [], "exprvars": [] } }, "438": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "10": { "goal": [{ "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "11": { "goal": [ { "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "36": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "360": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T104"], "free": [], "exprvars": [] } }, "361": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "340": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "121": { "goal": [{ "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "441": { "goal": [ { "clause": 7, "scope": 3, "term": "(add T94 T95 T97)" }, { "clause": 8, "scope": 3, "term": "(add T94 T95 T97)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "123": { "goal": [ { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "189": { "goal": [{ "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "200": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T66 X68) (',' (s2 T67 X69) (s2 (plus X68 X69) T69)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T66", "T67" ], "free": [ "X68", "X69" ], "exprvars": [] } }, "442": { "goal": [{ "clause": 7, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "3": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "201": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "443": { "goal": [{ "clause": 8, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "445": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T123 T124 T126)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T123", "T124" ], "free": [], "exprvars": [] } }, "6": { "goal": [ { "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "446": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "349": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "209": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T66 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T66"], "free": ["X68"], "exprvars": [] } } }, "edges": [ { "from": 3, "to": 6, "label": "CASE" }, { "from": 6, "to": 10, "label": "PARALLEL" }, { "from": 6, "to": 11, "label": "PARALLEL" }, { "from": 10, "to": 27, "label": "EVAL with clause\ns2(plus(X17, plus(X18, X19)), X20) :- s2(plus(plus(X17, X18), X19), X20).\nand substitutionX17 -> T19,\nX18 -> T20,\nX19 -> T21,\nT1 -> plus(T19, plus(T20, T21)),\nT2 -> T23,\nX20 -> T23,\nT22 -> T23" }, { "from": 10, "to": 36, "label": "EVAL-BACKTRACK" }, { "from": 11, "to": 121, "label": "PARALLEL" }, { "from": 11, "to": 123, "label": "PARALLEL" }, { "from": 27, "to": 3, "label": "INSTANCE with matching:\nT1 -> plus(plus(T19, T20), T21)\nT2 -> T23" }, { "from": 121, "to": 175, "label": "EVAL with clause\ns2(plus(X37, X38), X39) :- s2(plus(X38, X37), X39).\nand substitutionX37 -> T41,\nX38 -> T42,\nT1 -> plus(T41, T42),\nT2 -> T44,\nX39 -> T44,\nT43 -> T44" }, { "from": 121, "to": 179, "label": "EVAL-BACKTRACK" }, { "from": 123, "to": 189, "label": "PARALLEL" }, { "from": 123, "to": 190, "label": "PARALLEL" }, { "from": 175, "to": 3, "label": "INSTANCE with matching:\nT1 -> plus(T42, T41)\nT2 -> T44" }, { "from": 189, "to": 191, "label": "EVAL with clause\ns2(plus(X48, 0), X48).\nand substitutionX48 -> T53,\nT1 -> plus(T53, 0),\nT2 -> T53" }, { "from": 189, "to": 192, "label": "EVAL-BACKTRACK" }, { "from": 190, "to": 196, "label": "PARALLEL" }, { "from": 190, "to": 197, "label": "PARALLEL" }, { "from": 191, "to": 193, "label": "SUCCESS" }, { "from": 196, "to": 200, "label": "EVAL with clause\ns2(plus(X65, X66), X67) :- ','(s2(X65, X68), ','(s2(X66, X69), s2(plus(X68, X69), X67))).\nand substitutionX65 -> T66,\nX66 -> T67,\nT1 -> plus(T66, T67),\nT2 -> T69,\nX67 -> T69,\nT68 -> T69" }, { "from": 196, "to": 201, "label": "EVAL-BACKTRACK" }, { "from": 197, "to": 338, "label": "EVAL with clause\ns2(plus(X100, X101), X102) :- ','(isNat(X100), ','(isNat(X101), add(X100, X101, X102))).\nand substitutionX100 -> T94,\nX101 -> T95,\nT1 -> plus(T94, T95),\nT2 -> T97,\nX102 -> T97,\nT96 -> T97" }, { "from": 197, "to": 340, "label": "EVAL-BACKTRACK" }, { "from": 200, "to": 209, "label": "SPLIT 1" }, { "from": 200, "to": 210, "label": "SPLIT 2\nnew knowledge:\nT66 is ground\nT73 is ground\nreplacements:X68 -> T73" }, { "from": 209, "to": 3, "label": "INSTANCE with matching:\nT1 -> T66\nT2 -> X68" }, { "from": 210, "to": 314, "label": "SPLIT 1" }, { "from": 210, "to": 315, "label": "SPLIT 2\nnew knowledge:\nT67 is ground\nT80 is ground\nreplacements:X69 -> T80" }, { "from": 314, "to": 3, "label": "INSTANCE with matching:\nT1 -> T67\nT2 -> X69" }, { "from": 315, "to": 3, "label": "INSTANCE with matching:\nT1 -> plus(T73, T80)\nT2 -> T69" }, { "from": 338, "to": 349, "label": "SPLIT 1" }, { "from": 338, "to": 350, "label": "SPLIT 2\nnew knowledge:\nT94 is ground" }, { "from": 349, "to": 355, "label": "CASE" }, { "from": 350, "to": 437, "label": "SPLIT 1" }, { "from": 350, "to": 438, "label": "SPLIT 2\nnew knowledge:\nT95 is ground" }, { "from": 355, "to": 358, "label": "PARALLEL" }, { "from": 355, "to": 359, "label": "PARALLEL" }, { "from": 358, "to": 360, "label": "EVAL with clause\nisNat(s(X109)) :- isNat(X109).\nand substitutionX109 -> T104,\nT94 -> s(T104)" }, { "from": 358, "to": 361, "label": "EVAL-BACKTRACK" }, { "from": 359, "to": 434, "label": "EVAL with clause\nisNat(0).\nand substitutionT94 -> 0" }, { "from": 359, "to": 435, "label": "EVAL-BACKTRACK" }, { "from": 360, "to": 349, "label": "INSTANCE with matching:\nT94 -> T104" }, { "from": 434, "to": 436, "label": "SUCCESS" }, { "from": 437, "to": 349, "label": "INSTANCE with matching:\nT94 -> T95" }, { "from": 438, "to": 441, "label": "CASE" }, { "from": 441, "to": 442, "label": "PARALLEL" }, { "from": 441, "to": 443, "label": "PARALLEL" }, { "from": 442, "to": 445, "label": "EVAL with clause\nadd(s(X128), X129, s(X130)) :- add(X128, X129, X130).\nand substitutionX128 -> T123,\nT94 -> s(T123),\nT95 -> T124,\nX129 -> T124,\nX130 -> T126,\nT97 -> s(T126),\nT125 -> T126" }, { "from": 442, "to": 446, "label": "EVAL-BACKTRACK" }, { "from": 443, "to": 451, "label": "EVAL with clause\nadd(0, X136, X136).\nand substitutionT94 -> 0,\nT95 -> T132,\nX136 -> T132,\nT97 -> T132" }, { "from": 443, "to": 452, "label": "EVAL-BACKTRACK" }, { "from": 445, "to": 438, "label": "INSTANCE with matching:\nT94 -> T123\nT95 -> T124\nT97 -> T126" }, { "from": 451, "to": 453, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (76) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. ---------------------------------------- (77) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (78) Obligation: Q DP problem: The TRS P consists of the following rules: F3_IN(plus(T19, plus(T20, T21))) -> U1^1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) F3_IN(plus(T19, plus(T20, T21))) -> F3_IN(plus(plus(T19, T20), T21)) F3_IN(plus(T41, T42)) -> U2^1(f3_in(plus(T42, T41)), plus(T41, T42)) F3_IN(plus(T41, T42)) -> F3_IN(plus(T42, T41)) F3_IN(plus(T66, T67)) -> U3^1(f200_in(T66, T67), plus(T66, T67)) F3_IN(plus(T66, T67)) -> F200_IN(T66, T67) F3_IN(plus(T94, T95)) -> U4^1(f338_in(T94, T95), plus(T94, T95)) F3_IN(plus(T94, T95)) -> F338_IN(T94, T95) F349_IN(s(T104)) -> U5^1(f349_in(T104), s(T104)) F349_IN(s(T104)) -> F349_IN(T104) F438_IN(s(T123), T124) -> U6^1(f438_in(T123, T124), s(T123), T124) F438_IN(s(T123), T124) -> F438_IN(T123, T124) F200_IN(T66, T67) -> U7^1(f3_in(T66), T66, T67) F200_IN(T66, T67) -> F3_IN(T66) U7^1(f3_out1(T73), T66, T67) -> U8^1(f210_in(T67, T73), T66, T67, T73) U7^1(f3_out1(T73), T66, T67) -> F210_IN(T67, T73) F210_IN(T67, T73) -> U9^1(f3_in(T67), T67, T73) F210_IN(T67, T73) -> F3_IN(T67) U9^1(f3_out1(T80), T67, T73) -> U10^1(f3_in(plus(T73, T80)), T67, T73, T80) U9^1(f3_out1(T80), T67, T73) -> F3_IN(plus(T73, T80)) F338_IN(T94, T95) -> U11^1(f349_in(T94), T94, T95) F338_IN(T94, T95) -> F349_IN(T94) U11^1(f349_out1, T94, T95) -> U12^1(f350_in(T95, T94), T94, T95) U11^1(f349_out1, T94, T95) -> F350_IN(T95, T94) F350_IN(T95, T94) -> U13^1(f349_in(T95), T95, T94) F350_IN(T95, T94) -> F349_IN(T95) U13^1(f349_out1, T95, T94) -> U14^1(f438_in(T94, T95), T95, T94) U13^1(f349_out1, T95, T94) -> F438_IN(T94, T95) The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (79) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 17 less nodes. ---------------------------------------- (80) Complex Obligation (AND) ---------------------------------------- (81) Obligation: Q DP problem: The TRS P consists of the following rules: F438_IN(s(T123), T124) -> F438_IN(T123, T124) The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (82) 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. ---------------------------------------- (83) Obligation: Q DP problem: The TRS P consists of the following rules: F438_IN(s(T123), T124) -> F438_IN(T123, T124) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (84) 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: *F438_IN(s(T123), T124) -> F438_IN(T123, T124) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (85) YES ---------------------------------------- (86) Obligation: Q DP problem: The TRS P consists of the following rules: F349_IN(s(T104)) -> F349_IN(T104) The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (87) 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. ---------------------------------------- (88) Obligation: Q DP problem: The TRS P consists of the following rules: F349_IN(s(T104)) -> F349_IN(T104) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (89) 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: *F349_IN(s(T104)) -> F349_IN(T104) The graph contains the following edges 1 > 1 ---------------------------------------- (90) YES ---------------------------------------- (91) Obligation: Q DP problem: The TRS P consists of the following rules: F3_IN(plus(T41, T42)) -> F3_IN(plus(T42, T41)) F3_IN(plus(T19, plus(T20, T21))) -> F3_IN(plus(plus(T19, T20), T21)) F3_IN(plus(T66, T67)) -> F200_IN(T66, T67) F200_IN(T66, T67) -> U7^1(f3_in(T66), T66, T67) U7^1(f3_out1(T73), T66, T67) -> F210_IN(T67, T73) F210_IN(T67, T73) -> U9^1(f3_in(T67), T67, T73) U9^1(f3_out1(T80), T67, T73) -> F3_IN(plus(T73, T80)) F210_IN(T67, T73) -> F3_IN(T67) F200_IN(T66, T67) -> F3_IN(T66) The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (92) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. F200_IN(T66, T67) -> U7^1(f3_in(T66), T66, T67) U7^1(f3_out1(T73), T66, T67) -> F210_IN(T67, T73) F200_IN(T66, T67) -> F3_IN(T66) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U7^1_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_3 - 1} POL( U9^1_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_3 - 1} POL( f3_in_1(x_1) ) = 2x_1 POL( plus_2(x_1, x_2) ) = x_1 + x_2 + 1 POL( U1_2(x_1, x_2) ) = x_1 POL( U2_2(x_1, x_2) ) = x_1 POL( 0 ) = 0 POL( f3_out1_1(x_1) ) = 2x_1 + 2 POL( U3_2(x_1, x_2) ) = x_1 + 2 POL( f200_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U4_2(x_1, x_2) ) = x_1 + 2 POL( f338_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( f200_out1_3(x_1, ..., x_3) ) = 2x_3 POL( U7_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_3 - 2} POL( U8_4(x_1, ..., x_4) ) = x_1 POL( f210_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( f210_out1_2(x_1, x_2) ) = 2x_2 POL( U9_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_3 - 2} POL( U10_4(x_1, ..., x_4) ) = max{0, x_1 - 2} POL( U11_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( f349_in_1(x_1) ) = 0 POL( f338_out1_1(x_1) ) = 2x_1 POL( U12_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U13_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( s_1(x_1) ) = 1 POL( U5_2(x_1, x_2) ) = max{0, -2} POL( f349_out1 ) = 0 POL( f350_in_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( f350_out1_1(x_1) ) = 2x_1 + 2 POL( U14_3(x_1, ..., x_3) ) = x_1 + 2 POL( f438_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U6_3(x_1, ..., x_3) ) = 2x_2 POL( f438_out1_1(x_1) ) = 2x_1 POL( F3_IN_1(x_1) ) = max{0, 2x_1 - 1} POL( F200_IN_2(x_1, x_2) ) = 2x_1 + 2x_2 + 1 POL( F210_IN_2(x_1, x_2) ) = 2x_1 + 2x_2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) f349_in(0) -> f349_out1 U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U5(f349_out1, s(T104)) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) f438_in(0, T132) -> f438_out1(T132) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) ---------------------------------------- (93) Obligation: Q DP problem: The TRS P consists of the following rules: F3_IN(plus(T41, T42)) -> F3_IN(plus(T42, T41)) F3_IN(plus(T19, plus(T20, T21))) -> F3_IN(plus(plus(T19, T20), T21)) F3_IN(plus(T66, T67)) -> F200_IN(T66, T67) F210_IN(T67, T73) -> U9^1(f3_in(T67), T67, T73) U9^1(f3_out1(T80), T67, T73) -> F3_IN(plus(T73, T80)) F210_IN(T67, T73) -> F3_IN(T67) The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (94) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 4 less nodes. ---------------------------------------- (95) Obligation: Q DP problem: The TRS P consists of the following rules: F3_IN(plus(T19, plus(T20, T21))) -> F3_IN(plus(plus(T19, T20), T21)) F3_IN(plus(T41, T42)) -> F3_IN(plus(T42, T41)) The TRS R consists of the following rules: f3_in(plus(T19, plus(T20, T21))) -> U1(f3_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f3_out1(T23), plus(T19, plus(T20, T21))) -> f3_out1(T23) f3_in(plus(T41, T42)) -> U2(f3_in(plus(T42, T41)), plus(T41, T42)) U2(f3_out1(T44), plus(T41, T42)) -> f3_out1(T44) f3_in(plus(T53, 0)) -> f3_out1(T53) f3_in(plus(T66, T67)) -> U3(f200_in(T66, T67), plus(T66, T67)) U3(f200_out1(X68, X69, T69), plus(T66, T67)) -> f3_out1(T69) f3_in(plus(T94, T95)) -> U4(f338_in(T94, T95), plus(T94, T95)) U4(f338_out1(T97), plus(T94, T95)) -> f3_out1(T97) f349_in(s(T104)) -> U5(f349_in(T104), s(T104)) U5(f349_out1, s(T104)) -> f349_out1 f349_in(0) -> f349_out1 f438_in(s(T123), T124) -> U6(f438_in(T123, T124), s(T123), T124) U6(f438_out1(T126), s(T123), T124) -> f438_out1(s(T126)) f438_in(0, T132) -> f438_out1(T132) f200_in(T66, T67) -> U7(f3_in(T66), T66, T67) U7(f3_out1(T73), T66, T67) -> U8(f210_in(T67, T73), T66, T67, T73) U8(f210_out1(X69, T69), T66, T67, T73) -> f200_out1(T73, X69, T69) f210_in(T67, T73) -> U9(f3_in(T67), T67, T73) U9(f3_out1(T80), T67, T73) -> U10(f3_in(plus(T73, T80)), T67, T73, T80) U10(f3_out1(T69), T67, T73, T80) -> f210_out1(T80, T69) f338_in(T94, T95) -> U11(f349_in(T94), T94, T95) U11(f349_out1, T94, T95) -> U12(f350_in(T95, T94), T94, T95) U12(f350_out1(T97), T94, T95) -> f338_out1(T97) f350_in(T95, T94) -> U13(f349_in(T95), T95, T94) U13(f349_out1, T95, T94) -> U14(f438_in(T94, T95), T95, T94) U14(f438_out1(T97), T95, T94) -> f350_out1(T97) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (96) 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. ---------------------------------------- (97) Obligation: Q DP problem: The TRS P consists of the following rules: F3_IN(plus(T19, plus(T20, T21))) -> F3_IN(plus(plus(T19, T20), T21)) F3_IN(plus(T41, T42)) -> F3_IN(plus(T42, T41)) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (98) 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 = F3_IN(plus(T41, T42)) evaluates to t =F3_IN(plus(T42, T41)) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [T41 / T42, T42 / T41] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence The DP semiunifies directly so there is only one rewrite step from F3_IN(plus(T41, T42)) to F3_IN(plus(T42, T41)). ---------------------------------------- (99) NO ---------------------------------------- (100) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 1, "program": { "directives": [], "clauses": [ [ "(s2 (plus A (plus B C)) D)", "(s2 (plus (plus A B) C) D)" ], [ "(s2 (plus A B) C)", "(s2 (plus B A) C)" ], [ "(s2 (plus X (0)) X)", null ], [ "(s2 (plus X Y) Z)", "(',' (s2 X A) (',' (s2 Y B) (s2 (plus A B) Z)))" ], [ "(s2 (plus A B) C)", "(',' (isNat A) (',' (isNat B) (add A B C)))" ], [ "(isNat (s X))", "(isNat X)" ], [ "(isNat (0))", null ], [ "(add (s X) Y (s Z))", "(add X Y Z)" ], [ "(add (0) X X)", null ] ] }, "graph": { "nodes": { "290": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T95) (add T94 T95 T97))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "291": { "goal": [ { "clause": 5, "scope": 2, "term": "(isNat T94)" }, { "clause": 6, "scope": 2, "term": "(isNat T94)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "type": "Nodes", "194": { "goal": [{ "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "195": { "goal": [ { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "294": { "goal": [{ "clause": 5, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "295": { "goal": [{ "clause": 6, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "296": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T104"], "free": [], "exprvars": [] } }, "198": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T42 T41) T44)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T41", "T42" ], "free": [], "exprvars": [] } }, "297": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "199": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "298": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "299": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "310": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "454": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "213": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T66 X68) (',' (s2 T67 X69) (s2 (plus X68 X69) T69)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T66", "T67" ], "free": [ "X68", "X69" ], "exprvars": [] } }, "455": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "214": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "456": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "37": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus (plus T19 T20) T21) T23)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T19", "T20", "T21" ], "free": [], "exprvars": [] } }, "39": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "280": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T67 X69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T67"], "free": ["X69"], "exprvars": [] } }, "281": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T73 T80) T69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T73", "T80" ], "free": [], "exprvars": [] } }, "285": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T94) (',' (isNat T95) (add T94 T95 T97)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "243": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T66 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T66"], "free": ["X68"], "exprvars": [] } }, "287": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "289": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "300": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "202": { "goal": [{ "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "246": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T67 X69) (s2 (plus T73 X69) T69))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T67", "T73" ], "free": ["X69"], "exprvars": [] } }, "5": { "goal": [ { "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "203": { "goal": [ { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "302": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T95"], "free": [], "exprvars": [] } }, "204": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "303": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "205": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "8": { "goal": [{ "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "206": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "9": { "goal": [ { "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "207": { "goal": [{ "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "306": { "goal": [ { "clause": 7, "scope": 3, "term": "(add T94 T95 T97)" }, { "clause": 8, "scope": 3, "term": "(add T94 T95 T97)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "208": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "307": { "goal": [{ "clause": 7, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "308": { "goal": [{ "clause": 8, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "309": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T123 T124 T126)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T123", "T124" ], "free": [], "exprvars": [] } } }, "edges": [ { "from": 1, "to": 5, "label": "CASE" }, { "from": 5, "to": 8, "label": "PARALLEL" }, { "from": 5, "to": 9, "label": "PARALLEL" }, { "from": 8, "to": 37, "label": "EVAL with clause\ns2(plus(X17, plus(X18, X19)), X20) :- s2(plus(plus(X17, X18), X19), X20).\nand substitutionX17 -> T19,\nX18 -> T20,\nX19 -> T21,\nT1 -> plus(T19, plus(T20, T21)),\nT2 -> T23,\nX20 -> T23,\nT22 -> T23" }, { "from": 8, "to": 39, "label": "EVAL-BACKTRACK" }, { "from": 9, "to": 194, "label": "PARALLEL" }, { "from": 9, "to": 195, "label": "PARALLEL" }, { "from": 37, "to": 1, "label": "INSTANCE with matching:\nT1 -> plus(plus(T19, T20), T21)\nT2 -> T23" }, { "from": 194, "to": 198, "label": "EVAL with clause\ns2(plus(X37, X38), X39) :- s2(plus(X38, X37), X39).\nand substitutionX37 -> T41,\nX38 -> T42,\nT1 -> plus(T41, T42),\nT2 -> T44,\nX39 -> T44,\nT43 -> T44" }, { "from": 194, "to": 199, "label": "EVAL-BACKTRACK" }, { "from": 195, "to": 202, "label": "PARALLEL" }, { "from": 195, "to": 203, "label": "PARALLEL" }, { "from": 198, "to": 1, "label": "INSTANCE with matching:\nT1 -> plus(T42, T41)\nT2 -> T44" }, { "from": 202, "to": 204, "label": "EVAL with clause\ns2(plus(X48, 0), X48).\nand substitutionX48 -> T53,\nT1 -> plus(T53, 0),\nT2 -> T53" }, { "from": 202, "to": 205, "label": "EVAL-BACKTRACK" }, { "from": 203, "to": 207, "label": "PARALLEL" }, { "from": 203, "to": 208, "label": "PARALLEL" }, { "from": 204, "to": 206, "label": "SUCCESS" }, { "from": 207, "to": 213, "label": "EVAL with clause\ns2(plus(X65, X66), X67) :- ','(s2(X65, X68), ','(s2(X66, X69), s2(plus(X68, X69), X67))).\nand substitutionX65 -> T66,\nX66 -> T67,\nT1 -> plus(T66, T67),\nT2 -> T69,\nX67 -> T69,\nT68 -> T69" }, { "from": 207, "to": 214, "label": "EVAL-BACKTRACK" }, { "from": 208, "to": 285, "label": "EVAL with clause\ns2(plus(X100, X101), X102) :- ','(isNat(X100), ','(isNat(X101), add(X100, X101, X102))).\nand substitutionX100 -> T94,\nX101 -> T95,\nT1 -> plus(T94, T95),\nT2 -> T97,\nX102 -> T97,\nT96 -> T97" }, { "from": 208, "to": 287, "label": "EVAL-BACKTRACK" }, { "from": 213, "to": 243, "label": "SPLIT 1" }, { "from": 213, "to": 246, "label": "SPLIT 2\nnew knowledge:\nT66 is ground\nT73 is ground\nreplacements:X68 -> T73" }, { "from": 243, "to": 1, "label": "INSTANCE with matching:\nT1 -> T66\nT2 -> X68" }, { "from": 246, "to": 280, "label": "SPLIT 1" }, { "from": 246, "to": 281, "label": "SPLIT 2\nnew knowledge:\nT67 is ground\nT80 is ground\nreplacements:X69 -> T80" }, { "from": 280, "to": 1, "label": "INSTANCE with matching:\nT1 -> T67\nT2 -> X69" }, { "from": 281, "to": 1, "label": "INSTANCE with matching:\nT1 -> plus(T73, T80)\nT2 -> T69" }, { "from": 285, "to": 289, "label": "SPLIT 1" }, { "from": 285, "to": 290, "label": "SPLIT 2\nnew knowledge:\nT94 is ground" }, { "from": 289, "to": 291, "label": "CASE" }, { "from": 290, "to": 302, "label": "SPLIT 1" }, { "from": 290, "to": 303, "label": "SPLIT 2\nnew knowledge:\nT95 is ground" }, { "from": 291, "to": 294, "label": "PARALLEL" }, { "from": 291, "to": 295, "label": "PARALLEL" }, { "from": 294, "to": 296, "label": "EVAL with clause\nisNat(s(X109)) :- isNat(X109).\nand substitutionX109 -> T104,\nT94 -> s(T104)" }, { "from": 294, "to": 297, "label": "EVAL-BACKTRACK" }, { "from": 295, "to": 298, "label": "EVAL with clause\nisNat(0).\nand substitutionT94 -> 0" }, { "from": 295, "to": 299, "label": "EVAL-BACKTRACK" }, { "from": 296, "to": 289, "label": "INSTANCE with matching:\nT94 -> T104" }, { "from": 298, "to": 300, "label": "SUCCESS" }, { "from": 302, "to": 289, "label": "INSTANCE with matching:\nT94 -> T95" }, { "from": 303, "to": 306, "label": "CASE" }, { "from": 306, "to": 307, "label": "PARALLEL" }, { "from": 306, "to": 308, "label": "PARALLEL" }, { "from": 307, "to": 309, "label": "EVAL with clause\nadd(s(X128), X129, s(X130)) :- add(X128, X129, X130).\nand substitutionX128 -> T123,\nT94 -> s(T123),\nT95 -> T124,\nX129 -> T124,\nX130 -> T126,\nT97 -> s(T126),\nT125 -> T126" }, { "from": 307, "to": 310, "label": "EVAL-BACKTRACK" }, { "from": 308, "to": 454, "label": "EVAL with clause\nadd(0, X136, X136).\nand substitutionT94 -> 0,\nT95 -> T132,\nX136 -> T132,\nT97 -> T132" }, { "from": 308, "to": 455, "label": "EVAL-BACKTRACK" }, { "from": 309, "to": 303, "label": "INSTANCE with matching:\nT94 -> T123\nT95 -> T124\nT97 -> T126" }, { "from": 454, "to": 456, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (101) Complex Obligation (AND) ---------------------------------------- (102) Obligation: Rules: f303_out(T123, T124) -> f309_out(T123, T124) :|: TRUE f309_in(x, x1) -> f303_in(x, x1) :|: TRUE f308_out(T94, T95) -> f306_out(T94, T95) :|: TRUE f306_in(x2, x3) -> f308_in(x2, x3) :|: TRUE f306_in(x4, x5) -> f307_in(x4, x5) :|: TRUE f307_out(x6, x7) -> f306_out(x6, x7) :|: TRUE f310_out -> f307_out(x8, x9) :|: TRUE f309_out(x10, x11) -> f307_out(s(x10), x11) :|: TRUE f307_in(s(x12), x13) -> f309_in(x12, x13) :|: TRUE f307_in(x14, x15) -> f310_in :|: TRUE f303_in(x16, x17) -> f306_in(x16, x17) :|: TRUE f306_out(x18, x19) -> f303_out(x18, x19) :|: TRUE f1_in(T1) -> f5_in(T1) :|: TRUE f5_out(x20) -> f1_out(x20) :|: TRUE f5_in(x21) -> f8_in(x21) :|: TRUE f9_out(x22) -> f5_out(x22) :|: TRUE f8_out(x23) -> f5_out(x23) :|: TRUE f5_in(x24) -> f9_in(x24) :|: TRUE f9_in(x25) -> f195_in(x25) :|: TRUE f195_out(x26) -> f9_out(x26) :|: TRUE f9_in(x27) -> f194_in(x27) :|: TRUE f194_out(x28) -> f9_out(x28) :|: TRUE f202_out(x29) -> f195_out(x29) :|: TRUE f203_out(x30) -> f195_out(x30) :|: TRUE f195_in(x31) -> f202_in(x31) :|: TRUE f195_in(x32) -> f203_in(x32) :|: TRUE f207_out(x33) -> f203_out(x33) :|: TRUE f203_in(x34) -> f207_in(x34) :|: TRUE f203_in(x35) -> f208_in(x35) :|: TRUE f208_out(x36) -> f203_out(x36) :|: TRUE f208_in(x37) -> f287_in :|: TRUE f208_in(plus(x38, x39)) -> f285_in(x38, x39) :|: TRUE f285_out(x40, x41) -> f208_out(plus(x40, x41)) :|: TRUE f287_out -> f208_out(x42) :|: TRUE f289_out(x43) -> f290_in(x44, x43) :|: TRUE f290_out(x45, x46) -> f285_out(x46, x45) :|: TRUE f285_in(x47, x48) -> f289_in(x47) :|: TRUE f303_out(x49, x50) -> f290_out(x50, x49) :|: TRUE f290_in(x51, x52) -> f302_in(x51) :|: TRUE f302_out(x53) -> f303_in(x54, x53) :|: TRUE Start term: f1_in(T1) ---------------------------------------- (103) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: ---------------------------------------- (104) TRUE ---------------------------------------- (105) Obligation: Rules: f296_in(T104) -> f289_in(T104) :|: TRUE f289_out(x) -> f296_out(x) :|: TRUE f295_out(T94) -> f291_out(T94) :|: TRUE f291_in(x1) -> f294_in(x1) :|: TRUE f294_out(x2) -> f291_out(x2) :|: TRUE f291_in(x3) -> f295_in(x3) :|: TRUE f294_in(s(x4)) -> f296_in(x4) :|: TRUE f294_in(x5) -> f297_in :|: TRUE f296_out(x6) -> f294_out(s(x6)) :|: TRUE f297_out -> f294_out(x7) :|: TRUE f291_out(x8) -> f289_out(x8) :|: TRUE f289_in(x9) -> f291_in(x9) :|: TRUE f1_in(T1) -> f5_in(T1) :|: TRUE f5_out(x10) -> f1_out(x10) :|: TRUE f5_in(x11) -> f8_in(x11) :|: TRUE f9_out(x12) -> f5_out(x12) :|: TRUE f8_out(x13) -> f5_out(x13) :|: TRUE f5_in(x14) -> f9_in(x14) :|: TRUE f9_in(x15) -> f195_in(x15) :|: TRUE f195_out(x16) -> f9_out(x16) :|: TRUE f9_in(x17) -> f194_in(x17) :|: TRUE f194_out(x18) -> f9_out(x18) :|: TRUE f202_out(x19) -> f195_out(x19) :|: TRUE f203_out(x20) -> f195_out(x20) :|: TRUE f195_in(x21) -> f202_in(x21) :|: TRUE f195_in(x22) -> f203_in(x22) :|: TRUE f207_out(x23) -> f203_out(x23) :|: TRUE f203_in(x24) -> f207_in(x24) :|: TRUE f203_in(x25) -> f208_in(x25) :|: TRUE f208_out(x26) -> f203_out(x26) :|: TRUE f208_in(x27) -> f287_in :|: TRUE f208_in(plus(x28, x29)) -> f285_in(x28, x29) :|: TRUE f285_out(x30, x31) -> f208_out(plus(x30, x31)) :|: TRUE f287_out -> f208_out(x32) :|: TRUE f289_out(x33) -> f290_in(x34, x33) :|: TRUE f290_out(x35, x36) -> f285_out(x36, x35) :|: TRUE f285_in(x37, x38) -> f289_in(x37) :|: TRUE f303_out(x39, x40) -> f290_out(x40, x39) :|: TRUE f290_in(x41, x42) -> f302_in(x41) :|: TRUE f302_out(x43) -> f303_in(x44, x43) :|: TRUE f302_in(T95) -> f289_in(T95) :|: TRUE f289_out(x45) -> f302_out(x45) :|: TRUE Start term: f1_in(T1) ---------------------------------------- (106) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f296_in(T104) -> f289_in(T104) :|: TRUE f291_in(x1) -> f294_in(x1) :|: TRUE f294_in(s(x4)) -> f296_in(x4) :|: TRUE f289_in(x9) -> f291_in(x9) :|: TRUE ---------------------------------------- (107) Obligation: Rules: f296_in(T104) -> f289_in(T104) :|: TRUE f291_in(x1) -> f294_in(x1) :|: TRUE f294_in(s(x4)) -> f296_in(x4) :|: TRUE f289_in(x9) -> f291_in(x9) :|: TRUE ---------------------------------------- (108) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (109) Obligation: Rules: f291_in(s(x4:0)) -> f291_in(x4:0) :|: TRUE ---------------------------------------- (110) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (111) Obligation: Rules: f291_in(s(x4:0)) -> f291_in(x4:0) :|: TRUE ---------------------------------------- (112) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f291_in(s(x4:0)) -> f291_in(x4:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (113) Obligation: Termination digraph: Nodes: (1) f291_in(s(x4:0)) -> f291_in(x4:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (114) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f291_in(VARIABLE) s(VARIABLE) Removed predefined arithmetic. ---------------------------------------- (115) Obligation: Rules: f291_in(s(x4:0)) -> f291_in(x4:0) ---------------------------------------- (116) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (117) Obligation: Q DP problem: The TRS P consists of the following rules: f291_in(s(x4:0)) -> f291_in(x4:0) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (118) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *f291_in(s(x4:0)) -> f291_in(x4:0) The graph contains the following edges 1 > 1 ---------------------------------------- (119) YES ---------------------------------------- (120) Obligation: Rules: f243_in(T66) -> f1_in(T66) :|: TRUE f1_out(x) -> f243_out(x) :|: TRUE f1_out(T67) -> f280_out(T67) :|: TRUE f280_in(x1) -> f1_in(x1) :|: TRUE f207_out(T1) -> f203_out(T1) :|: TRUE f203_in(x2) -> f207_in(x2) :|: TRUE f203_in(x3) -> f208_in(x3) :|: TRUE f208_out(x4) -> f203_out(x4) :|: TRUE f1_in(x5) -> f5_in(x5) :|: TRUE f5_out(x6) -> f1_out(x6) :|: TRUE f281_in(T73, T80) -> f1_in(plus(T73, T80)) :|: TRUE f1_out(plus(x7, x8)) -> f281_out(x7, x8) :|: TRUE f39_out -> f8_out(x9) :|: TRUE f8_in(plus(T19, plus(T20, T21))) -> f37_in(T19, T20, T21) :|: TRUE f37_out(x10, x11, x12) -> f8_out(plus(x10, plus(x11, x12))) :|: TRUE f8_in(x13) -> f39_in :|: TRUE f202_out(x14) -> f195_out(x14) :|: TRUE f203_out(x15) -> f195_out(x15) :|: TRUE f195_in(x16) -> f202_in(x16) :|: TRUE f195_in(x17) -> f203_in(x17) :|: TRUE f246_in(x18, x19) -> f280_in(x18) :|: TRUE f280_out(x20) -> f281_in(x21, x22) :|: TRUE f281_out(x23, x24) -> f246_out(x25, x23) :|: TRUE f1_out(plus(plus(x26, x27), x28)) -> f37_out(x26, x27, x28) :|: TRUE f37_in(x29, x30, x31) -> f1_in(plus(plus(x29, x30), x31)) :|: TRUE f213_out(x32, x33) -> f207_out(plus(x32, x33)) :|: TRUE f207_in(plus(x34, x35)) -> f213_in(x34, x35) :|: TRUE f207_in(x36) -> f214_in :|: TRUE f214_out -> f207_out(x37) :|: TRUE f9_in(x38) -> f195_in(x38) :|: TRUE f195_out(x39) -> f9_out(x39) :|: TRUE f9_in(x40) -> f194_in(x40) :|: TRUE f194_out(x41) -> f9_out(x41) :|: TRUE f198_in(T42, T41) -> f1_in(plus(T42, T41)) :|: TRUE f1_out(plus(x42, x43)) -> f198_out(x42, x43) :|: TRUE f5_in(x44) -> f8_in(x44) :|: TRUE f9_out(x45) -> f5_out(x45) :|: TRUE f8_out(x46) -> f5_out(x46) :|: TRUE f5_in(x47) -> f9_in(x47) :|: TRUE f246_out(x48, x49) -> f213_out(x50, x48) :|: TRUE f213_in(x51, x52) -> f243_in(x51) :|: TRUE f243_out(x53) -> f246_in(x54, x55) :|: TRUE f194_in(plus(x56, x57)) -> f198_in(x57, x56) :|: TRUE f194_in(x58) -> f199_in :|: TRUE f198_out(x59, x60) -> f194_out(plus(x60, x59)) :|: TRUE f199_out -> f194_out(x61) :|: TRUE Start term: f1_in(T1) ---------------------------------------- (121) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f243_in(T66) -> f1_in(T66) :|: TRUE f203_in(x2) -> f207_in(x2) :|: TRUE f1_in(x5) -> f5_in(x5) :|: TRUE f8_in(plus(T19, plus(T20, T21))) -> f37_in(T19, T20, T21) :|: TRUE f195_in(x17) -> f203_in(x17) :|: TRUE f37_in(x29, x30, x31) -> f1_in(plus(plus(x29, x30), x31)) :|: TRUE f207_in(plus(x34, x35)) -> f213_in(x34, x35) :|: TRUE f9_in(x38) -> f195_in(x38) :|: TRUE f9_in(x40) -> f194_in(x40) :|: TRUE f198_in(T42, T41) -> f1_in(plus(T42, T41)) :|: TRUE f5_in(x44) -> f8_in(x44) :|: TRUE f5_in(x47) -> f9_in(x47) :|: TRUE f213_in(x51, x52) -> f243_in(x51) :|: TRUE f194_in(plus(x56, x57)) -> f198_in(x57, x56) :|: TRUE ---------------------------------------- (122) Obligation: Rules: f243_in(T66) -> f1_in(T66) :|: TRUE f203_in(x2) -> f207_in(x2) :|: TRUE f1_in(x5) -> f5_in(x5) :|: TRUE f8_in(plus(T19, plus(T20, T21))) -> f37_in(T19, T20, T21) :|: TRUE f195_in(x17) -> f203_in(x17) :|: TRUE f37_in(x29, x30, x31) -> f1_in(plus(plus(x29, x30), x31)) :|: TRUE f207_in(plus(x34, x35)) -> f213_in(x34, x35) :|: TRUE f9_in(x38) -> f195_in(x38) :|: TRUE f9_in(x40) -> f194_in(x40) :|: TRUE f198_in(T42, T41) -> f1_in(plus(T42, T41)) :|: TRUE f5_in(x44) -> f8_in(x44) :|: TRUE f5_in(x47) -> f9_in(x47) :|: TRUE f213_in(x51, x52) -> f243_in(x51) :|: TRUE f194_in(plus(x56, x57)) -> f198_in(x57, x56) :|: TRUE ---------------------------------------- (123) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (124) Obligation: Rules: f5_in(plus(x56:0, x57:0)) -> f5_in(plus(x57:0, x56:0)) :|: TRUE f5_in(plus(T19:0, plus(T20:0, T21:0))) -> f5_in(plus(plus(T19:0, T20:0), T21:0)) :|: TRUE f5_in(plus(x34:0, x35:0)) -> f5_in(x34:0) :|: TRUE ---------------------------------------- (125) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (126) Obligation: Rules: f5_in(plus(x56:0, x57:0)) -> f5_in(plus(x57:0, x56:0)) :|: TRUE f5_in(plus(T19:0, plus(T20:0, T21:0))) -> f5_in(plus(plus(T19:0, T20:0), T21:0)) :|: TRUE f5_in(plus(x34:0, x35:0)) -> f5_in(x34:0) :|: TRUE ---------------------------------------- (127) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5_in(plus(x56:0, x57:0)) -> f5_in(plus(x57:0, x56:0)) :|: TRUE (2) f5_in(plus(T19:0, plus(T20:0, T21:0))) -> f5_in(plus(plus(T19:0, T20:0), T21:0)) :|: TRUE (3) f5_in(plus(x34:0, x35:0)) -> f5_in(x34:0) :|: TRUE Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (128) Obligation: Termination digraph: Nodes: (1) f5_in(plus(x56:0, x57:0)) -> f5_in(plus(x57:0, x56:0)) :|: TRUE (2) f5_in(plus(T19:0, plus(T20:0, T21:0))) -> f5_in(plus(plus(T19:0, T20:0), T21:0)) :|: TRUE (3) f5_in(plus(x34:0, x35:0)) -> f5_in(x34:0) :|: TRUE Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (129) PrologToDTProblemTransformerProof (SOUND) Built DT problem from termination graph DT10. { "root": 2, "program": { "directives": [], "clauses": [ [ "(s2 (plus A (plus B C)) D)", "(s2 (plus (plus A B) C) D)" ], [ "(s2 (plus A B) C)", "(s2 (plus B A) C)" ], [ "(s2 (plus X (0)) X)", null ], [ "(s2 (plus X Y) Z)", "(',' (s2 X A) (',' (s2 Y B) (s2 (plus A B) Z)))" ], [ "(s2 (plus A B) C)", "(',' (isNat A) (',' (isNat B) (add A B C)))" ], [ "(isNat (s X))", "(isNat X)" ], [ "(isNat (0))", null ], [ "(add (s X) Y (s Z))", "(add X Y Z)" ], [ "(add (0) X X)", null ] ] }, "graph": { "nodes": { "type": "Nodes", "470": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "471": { "goal": [ { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "472": { "goal": [{ "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "473": { "goal": [ { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "474": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus (plus T196 T197) T195) T199)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T195", "T196", "T197" ], "free": [], "exprvars": [] } }, "475": { "goal": [ { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "476": { "goal": [{ "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "630": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "477": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "631": { "goal": [ { "clause": 7, "scope": 9, "term": "(add T479 T480 T482)" }, { "clause": 8, "scope": 9, "term": "(add T479 T480 T482)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } }, "632": { "goal": [{ "clause": 7, "scope": 9, "term": "(add T479 T480 T482)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } }, "633": { "goal": [{ "clause": 8, "scope": 9, "term": "(add T479 T480 T482)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } }, "634": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T498 T499 T501)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T498", "T499" ], "free": [], "exprvars": [] } }, "635": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "636": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "637": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "638": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "518": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T230 X212) (',' (s2 (plus T231 T232) X213) (s2 (plus X212 X213) T234)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T230", "T231", "T232" ], "free": [ "X212", "X213" ], "exprvars": [] } }, "639": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "519": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T230 X212)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T230"], "free": ["X212"], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "640": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "520": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 (plus T231 T232) X213) (s2 (plus T238 X213) T234))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T231", "T232", "T238" ], "free": ["X213"], "exprvars": [] } }, "641": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "4": { "goal": [ { "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "521": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T255) (',' (isNat (plus T256 T257)) (add T255 (plus T256 T257) T259)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T255", "T256", "T257" ], "free": [], "exprvars": [] } }, "642": { "goal": [ { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "522": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T255)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T255"], "free": [], "exprvars": [] } }, "643": { "goal": [{ "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "523": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat (plus T256 T257)) (add T255 (plus T256 T257) T259))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T255", "T256", "T257" ], "free": [], "exprvars": [] } }, "644": { "goal": [ { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "524": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat (plus T256 T257))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T256", "T257" ], "free": [], "exprvars": [] } }, "645": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "525": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T255 (plus T256 T257) T259)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T255", "T256", "T257" ], "free": [], "exprvars": [] } }, "646": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "526": { "goal": [ { "clause": 7, "scope": 6, "term": "(add T255 (plus T256 T257) T259)" }, { "clause": 8, "scope": 6, "term": "(add T255 (plus T256 T257) T259)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T255", "T256", "T257" ], "free": [], "exprvars": [] } }, "647": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "527": { "goal": [{ "clause": 7, "scope": 6, "term": "(add T255 (plus T256 T257) T259)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T255", "T256", "T257" ], "free": [], "exprvars": [] } }, "648": { "goal": [{ "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "528": { "goal": [{ "clause": 8, "scope": 6, "term": "(add T255 (plus T256 T257) T259)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T255", "T256", "T257" ], "free": [], "exprvars": [] } }, "649": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "529": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T282 (plus T283 T284) T286)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T282", "T283", "T284" ], "free": [], "exprvars": [] } }, "650": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T536 X548) (',' (s2 T537 X549) (s2 (plus X548 X549) T539)))" }], "kb": { "nonunifying": [[ "(s2 (plus T536 T537) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T536", "T537" ], "free": [ "X5", "X6", "X7", "X8", "X548", "X549" ], "exprvars": [] } }, "530": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "651": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T536 X548)" }], "kb": { "nonunifying": [[ "(s2 (plus T536 T537) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T536", "T537" ], "free": [ "X5", "X6", "X7", "X8", "X548" ], "exprvars": [] } }, "531": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "652": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T537 X549) (s2 (plus T543 X549) T539))" }], "kb": { "nonunifying": [[ "(s2 (plus T536 T537) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T536", "T537", "T543" ], "free": [ "X5", "X6", "X7", "X8", "X549" ], "exprvars": [] } }, "532": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "653": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T566) (',' (isNat T567) (add T566 T567 T569)))" }], "kb": { "nonunifying": [[ "(s2 (plus T566 T567) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T566", "T567" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "533": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "654": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T566)" }], "kb": { "nonunifying": [[ "(s2 (plus T566 T567) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T566", "T567" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "534": { "goal": [ { "clause": -1, "scope": -1, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "655": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T567) (add T566 T567 T569))" }], "kb": { "nonunifying": [[ "(s2 (plus T566 T567) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T566", "T567" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "535": { "goal": [ { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [ [ "(s2 T1 T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ], [ "(s2 T1 T2)", "(s2 (plus X270 X271) X272)" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [ "X5", "X6", "X7", "X8", "X270", "X271", "X272" ], "exprvars": [] } }, "656": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T567)" }], "kb": { "nonunifying": [[ "(s2 (plus T566 T567) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T566", "T567" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "536": { "goal": [ { "clause": 0, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 1, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 2, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 3, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 4, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": -1, "scope": 7, "term": null }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "657": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T566 T567 T569)" }], "kb": { "nonunifying": [[ "(s2 (plus T566 T567) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T566", "T567" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "537": { "goal": [{ "clause": 0, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "658": { "goal": [ { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [ [ "(s2 T1 T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ], [ "(s2 T1 T2)", "(s2 (plus X270 X271) X272)" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [ "X5", "X6", "X7", "X8", "X270", "X271", "X272" ], "exprvars": [] } }, "538": { "goal": [ { "clause": 1, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 2, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 3, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 4, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": -1, "scope": 7, "term": null }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "659": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [ [ "(s2 T1 T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ], [ "(s2 T1 T2)", "(s2 (plus X270 X271) X272)" ] ], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [ "X5", "X6", "X7", "X8", "X270", "X271", "X272" ], "exprvars": [] } }, "539": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus (plus T320 T321) T322) T324)" }], "kb": { "nonunifying": [[ "(s2 (plus (plus T321 T322) T320) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T320", "T321", "T322" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "35": { "goal": [ { "clause": -1, "scope": -1, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "38": { "goal": [ { "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }, { "clause": 4, "scope": 1, "term": "(s2 T1 T2)" } ], "kb": { "nonunifying": [[ "(s2 T1 T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "660": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "540": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "541": { "goal": [{ "clause": 1, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "542": { "goal": [ { "clause": 2, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 3, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 4, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": -1, "scope": 7, "term": null }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "301": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 (plus T113 T114) X94) (',' (s2 T115 X95) (s2 (plus X94 X95) T117)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T113", "T114", "T115" ], "free": [ "X94", "X95" ], "exprvars": [] } }, "543": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T359 T358) T361)" }], "kb": { "nonunifying": [[ "(s2 (plus T359 T358) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T358", "T359" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "544": { "goal": [{ "clause": 2, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "545": { "goal": [ { "clause": 3, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": 4, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": -1, "scope": 7, "term": null }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "304": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T113 T114) X94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T113", "T114" ], "free": ["X94"], "exprvars": [] } }, "546": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "305": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T115 X95) (s2 (plus T121 X95) T117))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T115", "T121" ], "free": ["X95"], "exprvars": [] } }, "547": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "548": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "44": { "goal": [ { "clause": 0, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 1, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 2, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 3, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 4, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "311": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T115 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T115"], "free": ["X95"], "exprvars": [] } }, "279": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T72 (plus T70 T71)) T74)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T70", "T71", "T72" ], "free": [], "exprvars": [] } }, "312": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T121 T128) T117)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T121", "T128" ], "free": [], "exprvars": [] } }, "439": { "goal": [{ "clause": 4, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "58": { "goal": [{ "clause": 0, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "59": { "goal": [ { "clause": 1, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 2, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 3, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 4, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "282": { "goal": [{ "clause": 2, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "283": { "goal": [ { "clause": 3, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 4, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "284": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "286": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "440": { "goal": [ { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "288": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "444": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat (plus T154 T155)) (',' (isNat T156) (add (plus T154 T155) T156 T158)))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155", "T156" ], "free": [], "exprvars": [] } }, "447": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat (plus T154 T155))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155" ], "free": [], "exprvars": [] } }, "448": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T156) (add (plus T154 T155) T156 T158))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155", "T156" ], "free": [], "exprvars": [] } }, "449": { "goal": [ { "clause": 5, "scope": 3, "term": "(isNat (plus T154 T155))" }, { "clause": 6, "scope": 3, "term": "(isNat (plus T154 T155))" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155" ], "free": [], "exprvars": [] } }, "60": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus (plus (plus T32 T33) T34) T35) T37)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T32", "T33", "T34", "T35" ], "free": [], "exprvars": [] } }, "61": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "292": { "goal": [{ "clause": 3, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "293": { "goal": [ { "clause": 4, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "450": { "goal": [{ "clause": 6, "scope": 3, "term": "(isNat (plus T154 T155))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155" ], "free": [], "exprvars": [] } }, "211": { "goal": [{ "clause": 1, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "212": { "goal": [ { "clause": 2, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 3, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": 4, "scope": 2, "term": "(s2 (plus (plus T7 T8) T9) T11)" }, { "clause": -1, "scope": 2, "term": null }, { "clause": 1, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 2, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T7 (plus T8 T9)) T2)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T7", "T8", "T9" ], "free": [], "exprvars": [] } }, "457": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "458": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T156)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "459": { "goal": [{ "clause": -1, "scope": -1, "term": "(add (plus T154 T155) T156 T158)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155", "T156" ], "free": [], "exprvars": [] } }, "619": { "goal": [{ "clause": 4, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "460": { "goal": [ { "clause": 5, "scope": 4, "term": "(isNat T156)" }, { "clause": 6, "scope": 4, "term": "(isNat T156)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "581": { "goal": [{ "clause": 3, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "461": { "goal": [{ "clause": 5, "scope": 4, "term": "(isNat T156)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "582": { "goal": [ { "clause": 4, "scope": 7, "term": "(s2 (plus T301 T300) T303)" }, { "clause": -1, "scope": 7, "term": null }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "462": { "goal": [{ "clause": 6, "scope": 4, "term": "(isNat T156)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "583": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T410 X399) (',' (s2 T411 X400) (s2 (plus X399 X400) T413)))" }], "kb": { "nonunifying": [[ "(s2 (plus T411 T410) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T410", "T411" ], "free": [ "X5", "X6", "X7", "X8", "X399", "X400" ], "exprvars": [] } }, "463": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T165)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T165"], "free": [], "exprvars": [] } }, "584": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T410 X399)" }], "kb": { "nonunifying": [[ "(s2 (plus T411 T410) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T410", "T411" ], "free": [ "X5", "X6", "X7", "X8", "X399" ], "exprvars": [] } }, "464": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "585": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (s2 T411 X400) (s2 (plus T425 X400) T413))" }], "kb": { "nonunifying": [[ "(s2 (plus T411 T410) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T410", "T411", "T425" ], "free": [ "X5", "X6", "X7", "X8", "X400" ], "exprvars": [] } }, "465": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "466": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "620": { "goal": [ { "clause": -1, "scope": 7, "term": null }, { "clause": 2, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 3, "scope": 1, "term": "(s2 (plus T300 T301) T2)" }, { "clause": 4, "scope": 1, "term": "(s2 (plus T300 T301) T2)" } ], "kb": { "nonunifying": [[ "(s2 (plus T300 T301) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T300", "T301" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "467": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "621": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T456) (',' (isNat T457) (add T456 T457 T459)))" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "468": { "goal": [ { "clause": 7, "scope": 5, "term": "(add (plus T154 T155) T156 T158)" }, { "clause": 8, "scope": 5, "term": "(add (plus T154 T155) T156 T158)" } ], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155", "T156" ], "free": [], "exprvars": [] } }, "622": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T456)" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "469": { "goal": [{ "clause": 8, "scope": 5, "term": "(add (plus T154 T155) T156 T158)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155", "T156" ], "free": [], "exprvars": [] } }, "623": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T457) (add T456 T457 T459))" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "624": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T457)" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "625": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T456 T457 T459)" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "626": { "goal": [ { "clause": 7, "scope": 8, "term": "(add T456 T457 T459)" }, { "clause": 8, "scope": 8, "term": "(add T456 T457 T459)" } ], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "627": { "goal": [{ "clause": 7, "scope": 8, "term": "(add T456 T457 T459)" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "628": { "goal": [{ "clause": 8, "scope": 8, "term": "(add T456 T457 T459)" }], "kb": { "nonunifying": [[ "(s2 (plus T457 T456) T2)", "(s2 (plus X5 (plus X6 X7)) X8)" ]], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T456", "T457" ], "free": [ "X5", "X6", "X7", "X8" ], "exprvars": [] } }, "629": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T479 T480 T482)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 4, "label": "CASE" }, { "from": 4, "to": 35, "label": "EVAL with clause\ns2(plus(X5, plus(X6, X7)), X8) :- s2(plus(plus(X5, X6), X7), X8).\nand substitutionX5 -> T7,\nX6 -> T8,\nX7 -> T9,\nT1 -> plus(T7, plus(T8, T9)),\nT2 -> T11,\nX8 -> T11,\nT10 -> T11" }, { "from": 4, "to": 38, "label": "EVAL-BACKTRACK" }, { "from": 35, "to": 44, "label": "CASE" }, { "from": 38, "to": 534, "label": "EVAL with clause\ns2(plus(X270, X271), X272) :- s2(plus(X271, X270), X272).\nand substitutionX270 -> T300,\nX271 -> T301,\nT1 -> plus(T300, T301),\nT2 -> T303,\nX272 -> T303,\nT302 -> T303" }, { "from": 38, "to": 535, "label": "EVAL-BACKTRACK" }, { "from": 44, "to": 58, "label": "PARALLEL" }, { "from": 44, "to": 59, "label": "PARALLEL" }, { "from": 58, "to": 60, "label": "EVAL with clause\ns2(plus(X25, plus(X26, X27)), X28) :- s2(plus(plus(X25, X26), X27), X28).\nand substitutionT7 -> T32,\nT8 -> T33,\nX25 -> plus(T32, T33),\nX26 -> T34,\nX27 -> T35,\nT9 -> plus(T34, T35),\nT11 -> T37,\nX28 -> T37,\nT36 -> T37" }, { "from": 58, "to": 61, "label": "EVAL-BACKTRACK" }, { "from": 59, "to": 211, "label": "PARALLEL" }, { "from": 59, "to": 212, "label": "PARALLEL" }, { "from": 60, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(plus(plus(T32, T33), T34), T35)\nT2 -> T37" }, { "from": 211, "to": 279, "label": "ONLY EVAL with clause\ns2(plus(X53, X54), X55) :- s2(plus(X54, X53), X55).\nand substitutionT7 -> T70,\nT8 -> T71,\nX53 -> plus(T70, T71),\nT9 -> T72,\nX54 -> T72,\nT11 -> T74,\nX55 -> T74,\nT73 -> T74" }, { "from": 212, "to": 282, "label": "PARALLEL" }, { "from": 212, "to": 283, "label": "PARALLEL" }, { "from": 279, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(T72, plus(T70, T71))\nT2 -> T74" }, { "from": 282, "to": 284, "label": "EVAL with clause\ns2(plus(X64, 0), X64).\nand substitutionT7 -> T87,\nT8 -> T88,\nX64 -> plus(T87, T88),\nT9 -> 0,\nT11 -> plus(T87, T88)" }, { "from": 282, "to": 286, "label": "EVAL-BACKTRACK" }, { "from": 283, "to": 292, "label": "PARALLEL" }, { "from": 283, "to": 293, "label": "PARALLEL" }, { "from": 284, "to": 288, "label": "SUCCESS" }, { "from": 292, "to": 301, "label": "ONLY EVAL with clause\ns2(plus(X91, X92), X93) :- ','(s2(X91, X94), ','(s2(X92, X95), s2(plus(X94, X95), X93))).\nand substitutionT7 -> T113,\nT8 -> T114,\nX91 -> plus(T113, T114),\nT9 -> T115,\nX92 -> T115,\nT11 -> T117,\nX93 -> T117,\nT116 -> T117" }, { "from": 293, "to": 439, "label": "PARALLEL" }, { "from": 293, "to": 440, "label": "PARALLEL" }, { "from": 301, "to": 304, "label": "SPLIT 1" }, { "from": 301, "to": 305, "label": "SPLIT 2\nnew knowledge:\nT113 is ground\nT114 is ground\nT121 is ground\nreplacements:X94 -> T121" }, { "from": 304, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(T113, T114)\nT2 -> X94" }, { "from": 305, "to": 311, "label": "SPLIT 1" }, { "from": 305, "to": 312, "label": "SPLIT 2\nnew knowledge:\nT115 is ground\nT128 is ground\nreplacements:X95 -> T128" }, { "from": 311, "to": 2, "label": "INSTANCE with matching:\nT1 -> T115\nT2 -> X95" }, { "from": 312, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(T121, T128)\nT2 -> T117" }, { "from": 439, "to": 444, "label": "ONLY EVAL with clause\ns2(plus(X134, X135), X136) :- ','(isNat(X134), ','(isNat(X135), add(X134, X135, X136))).\nand substitutionT7 -> T154,\nT8 -> T155,\nX134 -> plus(T154, T155),\nT9 -> T156,\nX135 -> T156,\nT11 -> T158,\nX136 -> T158,\nT157 -> T158" }, { "from": 440, "to": 471, "label": "FAILURE" }, { "from": 444, "to": 447, "label": "SPLIT 1" }, { "from": 444, "to": 448, "label": "SPLIT 2\nnew knowledge:\nT154 is ground\nT155 is ground" }, { "from": 447, "to": 449, "label": "CASE" }, { "from": 448, "to": 458, "label": "SPLIT 1" }, { "from": 448, "to": 459, "label": "SPLIT 2\nnew knowledge:\nT156 is ground" }, { "from": 449, "to": 450, "label": "BACKTRACK\nfor clause: isNat(s(X)) :- isNat(X)because of non-unification" }, { "from": 450, "to": 457, "label": "BACKTRACK\nfor clause: isNat(0)because of non-unification" }, { "from": 458, "to": 460, "label": "CASE" }, { "from": 459, "to": 468, "label": "CASE" }, { "from": 460, "to": 461, "label": "PARALLEL" }, { "from": 460, "to": 462, "label": "PARALLEL" }, { "from": 461, "to": 463, "label": "EVAL with clause\nisNat(s(X146)) :- isNat(X146).\nand substitutionX146 -> T165,\nT156 -> s(T165)" }, { "from": 461, "to": 464, "label": "EVAL-BACKTRACK" }, { "from": 462, "to": 465, "label": "EVAL with clause\nisNat(0).\nand substitutionT156 -> 0" }, { "from": 462, "to": 466, "label": "EVAL-BACKTRACK" }, { "from": 463, "to": 458, "label": "INSTANCE with matching:\nT156 -> T165" }, { "from": 465, "to": 467, "label": "SUCCESS" }, { "from": 468, "to": 469, "label": "BACKTRACK\nfor clause: add(s(X), Y, s(Z)) :- add(X, Y, Z)because of non-unification" }, { "from": 469, "to": 470, "label": "BACKTRACK\nfor clause: add(0, X, X)because of non-unification" }, { "from": 471, "to": 472, "label": "PARALLEL" }, { "from": 471, "to": 473, "label": "PARALLEL" }, { "from": 472, "to": 474, "label": "ONLY EVAL with clause\ns2(plus(X175, X176), X177) :- s2(plus(X176, X175), X177).\nand substitutionT7 -> T195,\nX175 -> T195,\nT8 -> T196,\nT9 -> T197,\nX176 -> plus(T196, T197),\nT2 -> T199,\nX177 -> T199,\nT198 -> T199" }, { "from": 473, "to": 475, "label": "BACKTRACK\nfor clause: s2(plus(X, 0), X)because of non-unification" }, { "from": 474, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(plus(T196, T197), T195)\nT2 -> T199" }, { "from": 475, "to": 476, "label": "PARALLEL" }, { "from": 475, "to": 477, "label": "PARALLEL" }, { "from": 476, "to": 518, "label": "ONLY EVAL with clause\ns2(plus(X209, X210), X211) :- ','(s2(X209, X212), ','(s2(X210, X213), s2(plus(X212, X213), X211))).\nand substitutionT7 -> T230,\nX209 -> T230,\nT8 -> T231,\nT9 -> T232,\nX210 -> plus(T231, T232),\nT2 -> T234,\nX211 -> T234,\nT233 -> T234" }, { "from": 477, "to": 521, "label": "ONLY EVAL with clause\ns2(plus(X236, X237), X238) :- ','(isNat(X236), ','(isNat(X237), add(X236, X237, X238))).\nand substitutionT7 -> T255,\nX236 -> T255,\nT8 -> T256,\nT9 -> T257,\nX237 -> plus(T256, T257),\nT2 -> T259,\nX238 -> T259,\nT258 -> T259" }, { "from": 518, "to": 519, "label": "SPLIT 1" }, { "from": 518, "to": 520, "label": "SPLIT 2\nnew knowledge:\nT230 is ground\nT238 is ground\nreplacements:X212 -> T238" }, { "from": 519, "to": 2, "label": "INSTANCE with matching:\nT1 -> T230\nT2 -> X212" }, { "from": 520, "to": 305, "label": "INSTANCE with matching:\nT115 -> plus(T231, T232)\nX95 -> X213\nT121 -> T238\nT117 -> T234" }, { "from": 521, "to": 522, "label": "SPLIT 1" }, { "from": 521, "to": 523, "label": "SPLIT 2\nnew knowledge:\nT255 is ground" }, { "from": 522, "to": 458, "label": "INSTANCE with matching:\nT156 -> T255" }, { "from": 523, "to": 524, "label": "SPLIT 1" }, { "from": 523, "to": 525, "label": "SPLIT 2\nnew knowledge:\nT256 is ground\nT257 is ground" }, { "from": 524, "to": 447, "label": "INSTANCE with matching:\nT154 -> T256\nT155 -> T257" }, { "from": 525, "to": 526, "label": "CASE" }, { "from": 526, "to": 527, "label": "PARALLEL" }, { "from": 526, "to": 528, "label": "PARALLEL" }, { "from": 527, "to": 529, "label": "EVAL with clause\nadd(s(X258), X259, s(X260)) :- add(X258, X259, X260).\nand substitutionX258 -> T282,\nT255 -> s(T282),\nT256 -> T283,\nT257 -> T284,\nX259 -> plus(T283, T284),\nX260 -> T286,\nT259 -> s(T286),\nT285 -> T286" }, { "from": 527, "to": 530, "label": "EVAL-BACKTRACK" }, { "from": 528, "to": 531, "label": "EVAL with clause\nadd(0, X266, X266).\nand substitutionT255 -> 0,\nT256 -> T295,\nT257 -> T296,\nX266 -> plus(T295, T296),\nT259 -> plus(T295, T296)" }, { "from": 528, "to": 532, "label": "EVAL-BACKTRACK" }, { "from": 529, "to": 525, "label": "INSTANCE with matching:\nT255 -> T282\nT256 -> T283\nT257 -> T284\nT259 -> T286" }, { "from": 531, "to": 533, "label": "SUCCESS" }, { "from": 534, "to": 536, "label": "CASE" }, { "from": 535, "to": 658, "label": "BACKTRACK\nfor clause: s2(plus(X, 0), X)\nwith clash: (s2(T1, T2), s2(plus(X270, X271), X272))" }, { "from": 536, "to": 537, "label": "PARALLEL" }, { "from": 536, "to": 538, "label": "PARALLEL" }, { "from": 537, "to": 539, "label": "EVAL with clause\ns2(plus(X289, plus(X290, X291)), X292) :- s2(plus(plus(X289, X290), X291), X292).\nand substitutionT301 -> T320,\nX289 -> T320,\nX290 -> T321,\nX291 -> T322,\nT300 -> plus(T321, T322),\nT303 -> T324,\nX292 -> T324,\nT323 -> T324" }, { "from": 537, "to": 540, "label": "EVAL-BACKTRACK" }, { "from": 538, "to": 541, "label": "PARALLEL" }, { "from": 538, "to": 542, "label": "PARALLEL" }, { "from": 539, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(plus(T320, T321), T322)\nT2 -> T324" }, { "from": 541, "to": 543, "label": "ONLY EVAL with clause\ns2(plus(X323, X324), X325) :- s2(plus(X324, X323), X325).\nand substitutionT301 -> T358,\nX323 -> T358,\nT300 -> T359,\nX324 -> T359,\nT303 -> T361,\nX325 -> T361,\nT360 -> T361" }, { "from": 542, "to": 544, "label": "PARALLEL" }, { "from": 542, "to": 545, "label": "PARALLEL" }, { "from": 543, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(T359, T358)\nT2 -> T361" }, { "from": 544, "to": 546, "label": "EVAL with clause\ns2(plus(X337, 0), X337).\nand substitutionT301 -> T373,\nX337 -> T373,\nT300 -> 0,\nT303 -> T373" }, { "from": 544, "to": 547, "label": "EVAL-BACKTRACK" }, { "from": 545, "to": 581, "label": "PARALLEL" }, { "from": 545, "to": 582, "label": "PARALLEL" }, { "from": 546, "to": 548, "label": "SUCCESS" }, { "from": 581, "to": 583, "label": "ONLY EVAL with clause\ns2(plus(X396, X397), X398) :- ','(s2(X396, X399), ','(s2(X397, X400), s2(plus(X399, X400), X398))).\nand substitutionT301 -> T410,\nX396 -> T410,\nT300 -> T411,\nX397 -> T411,\nT303 -> T413,\nX398 -> T413,\nT412 -> T413" }, { "from": 582, "to": 619, "label": "PARALLEL" }, { "from": 582, "to": 620, "label": "PARALLEL" }, { "from": 583, "to": 584, "label": "SPLIT 1" }, { "from": 583, "to": 585, "label": "SPLIT 2\nnew knowledge:\nT410 is ground\nT425 is ground\nreplacements:X399 -> T425" }, { "from": 584, "to": 2, "label": "INSTANCE with matching:\nT1 -> T410\nT2 -> X399" }, { "from": 585, "to": 305, "label": "INSTANCE with matching:\nT115 -> T411\nX95 -> X400\nT121 -> T425\nT117 -> T413" }, { "from": 619, "to": 621, "label": "ONLY EVAL with clause\ns2(plus(X462, X463), X464) :- ','(isNat(X462), ','(isNat(X463), add(X462, X463, X464))).\nand substitutionT301 -> T456,\nX462 -> T456,\nT300 -> T457,\nX463 -> T457,\nT303 -> T459,\nX464 -> T459,\nT458 -> T459" }, { "from": 620, "to": 642, "label": "FAILURE" }, { "from": 621, "to": 622, "label": "SPLIT 1" }, { "from": 621, "to": 623, "label": "SPLIT 2\nnew knowledge:\nT456 is ground" }, { "from": 622, "to": 458, "label": "INSTANCE with matching:\nT156 -> T456" }, { "from": 623, "to": 624, "label": "SPLIT 1" }, { "from": 623, "to": 625, "label": "SPLIT 2\nnew knowledge:\nT457 is ground" }, { "from": 624, "to": 458, "label": "INSTANCE with matching:\nT156 -> T457" }, { "from": 625, "to": 626, "label": "CASE" }, { "from": 626, "to": 627, "label": "PARALLEL" }, { "from": 626, "to": 628, "label": "PARALLEL" }, { "from": 627, "to": 629, "label": "EVAL with clause\nadd(s(X484), X485, s(X486)) :- add(X484, X485, X486).\nand substitutionX484 -> T479,\nT456 -> s(T479),\nT457 -> T480,\nX485 -> T480,\nX486 -> T482,\nT459 -> s(T482),\nT481 -> T482" }, { "from": 627, "to": 630, "label": "EVAL-BACKTRACK" }, { "from": 628, "to": 639, "label": "EVAL with clause\nadd(0, X513, X513).\nand substitutionT456 -> 0,\nT457 -> T510,\nX513 -> T510,\nT459 -> T510" }, { "from": 628, "to": 640, "label": "EVAL-BACKTRACK" }, { "from": 629, "to": 631, "label": "CASE" }, { "from": 631, "to": 632, "label": "PARALLEL" }, { "from": 631, "to": 633, "label": "PARALLEL" }, { "from": 632, "to": 634, "label": "EVAL with clause\nadd(s(X502), X503, s(X504)) :- add(X502, X503, X504).\nand substitutionX502 -> T498,\nT479 -> s(T498),\nT480 -> T499,\nX503 -> T499,\nX504 -> T501,\nT482 -> s(T501),\nT500 -> T501" }, { "from": 632, "to": 635, "label": "EVAL-BACKTRACK" }, { "from": 633, "to": 636, "label": "EVAL with clause\nadd(0, X510, X510).\nand substitutionT479 -> 0,\nT480 -> T507,\nX510 -> T507,\nT482 -> T507" }, { "from": 633, "to": 637, "label": "EVAL-BACKTRACK" }, { "from": 634, "to": 629, "label": "INSTANCE with matching:\nT479 -> T498\nT480 -> T499\nT482 -> T501" }, { "from": 636, "to": 638, "label": "SUCCESS" }, { "from": 639, "to": 641, "label": "SUCCESS" }, { "from": 642, "to": 643, "label": "PARALLEL" }, { "from": 642, "to": 644, "label": "PARALLEL" }, { "from": 643, "to": 645, "label": "EVAL with clause\ns2(plus(X518, 0), X518).\nand substitutionT300 -> T515,\nX518 -> T515,\nT301 -> 0,\nT2 -> T515" }, { "from": 643, "to": 646, "label": "EVAL-BACKTRACK" }, { "from": 644, "to": 648, "label": "PARALLEL" }, { "from": 644, "to": 649, "label": "PARALLEL" }, { "from": 645, "to": 647, "label": "SUCCESS" }, { "from": 648, "to": 650, "label": "ONLY EVAL with clause\ns2(plus(X545, X546), X547) :- ','(s2(X545, X548), ','(s2(X546, X549), s2(plus(X548, X549), X547))).\nand substitutionT300 -> T536,\nX545 -> T536,\nT301 -> T537,\nX546 -> T537,\nT2 -> T539,\nX547 -> T539,\nT538 -> T539" }, { "from": 649, "to": 653, "label": "ONLY EVAL with clause\ns2(plus(X588, X589), X590) :- ','(isNat(X588), ','(isNat(X589), add(X588, X589, X590))).\nand substitutionT300 -> T566,\nX588 -> T566,\nT301 -> T567,\nX589 -> T567,\nT2 -> T569,\nX590 -> T569,\nT568 -> T569" }, { "from": 650, "to": 651, "label": "SPLIT 1" }, { "from": 650, "to": 652, "label": "SPLIT 2\nnew knowledge:\nT536 is ground\nT543 is ground\nreplacements:X548 -> T543" }, { "from": 651, "to": 2, "label": "INSTANCE with matching:\nT1 -> T536\nT2 -> X548" }, { "from": 652, "to": 305, "label": "INSTANCE with matching:\nT115 -> T537\nX95 -> X549\nT121 -> T543\nT117 -> T539" }, { "from": 653, "to": 654, "label": "SPLIT 1" }, { "from": 653, "to": 655, "label": "SPLIT 2\nnew knowledge:\nT566 is ground" }, { "from": 654, "to": 458, "label": "INSTANCE with matching:\nT156 -> T566" }, { "from": 655, "to": 656, "label": "SPLIT 1" }, { "from": 655, "to": 657, "label": "SPLIT 2\nnew knowledge:\nT567 is ground" }, { "from": 656, "to": 458, "label": "INSTANCE with matching:\nT156 -> T567" }, { "from": 657, "to": 629, "label": "INSTANCE with matching:\nT479 -> T566\nT480 -> T567\nT482 -> T569" }, { "from": 658, "to": 659, "label": "BACKTRACK\nfor clause: s2(plus(X, Y), Z) :- ','(s2(X, A), ','(s2(Y, B), s2(plus(A, B), Z)))\nwith clash: (s2(T1, T2), s2(plus(X270, X271), X272))" }, { "from": 659, "to": 660, "label": "BACKTRACK\nfor clause: s2(plus(A, B), C) :- ','(isNat(A), ','(isNat(B), add(A, B, C)))\nwith clash: (s2(T1, T2), s2(plus(X270, X271), X272))" } ], "type": "Graph" } } ---------------------------------------- (130) Obligation: Triples: isNatD(s(X1)) :- isNatD(X1). pB(X1, X2, X3, X4) :- s2A(X1, X2). pB(X1, X2, X3, X4) :- ','(s2cA(X1, X2), s2A(plus(X3, X2), X4)). addC(s(X1), X2, X3, s(X4)) :- addC(X1, X2, X3, X4). addF(s(X1), X2, s(X3)) :- addF(X1, X2, X3). s2A(plus(X1, plus(X2, plus(X3, X4))), X5) :- s2A(plus(plus(plus(X1, X2), X3), X4), X5). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(plus(X3, plus(X1, X2)), X4). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(plus(X1, X2), X5). s2A(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(plus(X1, X2), X5), pB(X3, X6, X5, X4)). s2A(plus(X1, plus(X2, X3)), X4) :- isNatE(X1, X2). s2A(plus(X1, plus(X2, X3)), X4) :- ','(isNatcE(X1, X2), isNatD(X3)). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(plus(plus(X2, X3), X1), X4). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(X1, X5). s2A(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(X1, X5), pB(plus(X2, X3), X6, X5, X4)). s2A(plus(X1, plus(X2, X3)), X4) :- isNatD(X1). s2A(plus(X1, plus(X2, X3)), X4) :- ','(isNatcD(X1), isNatE(X2, X3)). s2A(plus(X1, plus(X2, X3)), X4) :- ','(isNatcD(X1), ','(isNatcE(X2, X3), addC(X1, X2, X3, X4))). s2A(plus(plus(X1, X2), X3), X4) :- s2A(plus(plus(X3, X1), X2), X4). s2A(plus(X1, X2), X3) :- s2A(plus(X1, X2), X3). s2A(plus(X1, X2), X3) :- s2A(X2, X4). s2A(plus(X1, X2), X3) :- ','(s2cA(X2, X4), pB(X1, X5, X4, X3)). s2A(plus(X1, X2), X3) :- isNatD(X2). s2A(plus(X1, X2), X3) :- ','(isNatcD(X2), isNatD(X1)). s2A(plus(X1, s(X2)), s(X3)) :- ','(isNatcD(s(X2)), ','(isNatcD(X1), addF(X2, X1, X3))). s2A(plus(X1, X2), X3) :- s2A(X1, X4). s2A(plus(X1, X2), X3) :- ','(s2cA(X1, X4), pB(X2, X5, X4, X3)). s2A(plus(X1, X2), X3) :- isNatD(X1). s2A(plus(X1, X2), X3) :- ','(isNatcD(X1), isNatD(X2)). s2A(plus(X1, X2), X3) :- ','(isNatcD(X1), ','(isNatcD(X2), addF(X1, X2, X3))). Clauses: s2cA(plus(X1, plus(X2, plus(X3, X4))), X5) :- s2cA(plus(plus(plus(X1, X2), X3), X4), X5). s2cA(plus(X1, plus(X2, X3)), X4) :- s2cA(plus(X3, plus(X1, X2)), X4). s2cA(plus(X1, plus(X2, 0)), plus(X1, X2)). s2cA(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(plus(X1, X2), X5), qcB(X3, X6, X5, X4)). s2cA(plus(X1, plus(X2, X3)), X4) :- s2cA(plus(plus(X2, X3), X1), X4). s2cA(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(X1, X5), qcB(plus(X2, X3), X6, X5, X4)). s2cA(plus(X1, plus(X2, X3)), X4) :- ','(isNatcD(X1), ','(isNatcE(X2, X3), addcC(X1, X2, X3, X4))). s2cA(plus(plus(X1, X2), X3), X4) :- s2cA(plus(plus(X3, X1), X2), X4). s2cA(plus(X1, X2), X3) :- s2cA(plus(X1, X2), X3). s2cA(plus(0, X1), X1). s2cA(plus(X1, X2), X3) :- ','(s2cA(X2, X4), qcB(X1, X5, X4, X3)). s2cA(plus(X1, s(X2)), s(X3)) :- ','(isNatcD(s(X2)), ','(isNatcD(X1), addcF(X2, X1, X3))). s2cA(plus(X1, 0), X1) :- ','(isNatcD(0), isNatcD(X1)). s2cA(plus(X1, 0), X1). s2cA(plus(X1, X2), X3) :- ','(s2cA(X1, X4), qcB(X2, X5, X4, X3)). s2cA(plus(X1, X2), X3) :- ','(isNatcD(X1), ','(isNatcD(X2), addcF(X1, X2, X3))). isNatcD(s(X1)) :- isNatcD(X1). isNatcD(0). qcB(X1, X2, X3, X4) :- ','(s2cA(X1, X2), s2cA(plus(X3, X2), X4)). addcC(s(X1), X2, X3, s(X4)) :- addcC(X1, X2, X3, X4). addcC(0, X1, X2, plus(X1, X2)). addcF(s(X1), X2, s(X3)) :- addcF(X1, X2, X3). addcF(0, X1, X1). Afs: s2A(x1, x2) = s2A(x1) ---------------------------------------- (131) UndefinedPredicateInTriplesTransformerProof (SOUND) Deleted triples and predicates having undefined goals [DT09]. ---------------------------------------- (132) Obligation: Triples: isNatD(s(X1)) :- isNatD(X1). pB(X1, X2, X3, X4) :- s2A(X1, X2). pB(X1, X2, X3, X4) :- ','(s2cA(X1, X2), s2A(plus(X3, X2), X4)). addC(s(X1), X2, X3, s(X4)) :- addC(X1, X2, X3, X4). addF(s(X1), X2, s(X3)) :- addF(X1, X2, X3). s2A(plus(X1, plus(X2, plus(X3, X4))), X5) :- s2A(plus(plus(plus(X1, X2), X3), X4), X5). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(plus(X3, plus(X1, X2)), X4). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(plus(X1, X2), X5). s2A(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(plus(X1, X2), X5), pB(X3, X6, X5, X4)). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(plus(plus(X2, X3), X1), X4). s2A(plus(X1, plus(X2, X3)), X4) :- s2A(X1, X5). s2A(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(X1, X5), pB(plus(X2, X3), X6, X5, X4)). s2A(plus(X1, plus(X2, X3)), X4) :- isNatD(X1). s2A(plus(plus(X1, X2), X3), X4) :- s2A(plus(plus(X3, X1), X2), X4). s2A(plus(X1, X2), X3) :- s2A(plus(X1, X2), X3). s2A(plus(X1, X2), X3) :- s2A(X2, X4). s2A(plus(X1, X2), X3) :- ','(s2cA(X2, X4), pB(X1, X5, X4, X3)). s2A(plus(X1, X2), X3) :- isNatD(X2). s2A(plus(X1, X2), X3) :- ','(isNatcD(X2), isNatD(X1)). s2A(plus(X1, s(X2)), s(X3)) :- ','(isNatcD(s(X2)), ','(isNatcD(X1), addF(X2, X1, X3))). s2A(plus(X1, X2), X3) :- s2A(X1, X4). s2A(plus(X1, X2), X3) :- ','(s2cA(X1, X4), pB(X2, X5, X4, X3)). s2A(plus(X1, X2), X3) :- isNatD(X1). s2A(plus(X1, X2), X3) :- ','(isNatcD(X1), isNatD(X2)). s2A(plus(X1, X2), X3) :- ','(isNatcD(X1), ','(isNatcD(X2), addF(X1, X2, X3))). Clauses: s2cA(plus(X1, plus(X2, plus(X3, X4))), X5) :- s2cA(plus(plus(plus(X1, X2), X3), X4), X5). s2cA(plus(X1, plus(X2, X3)), X4) :- s2cA(plus(X3, plus(X1, X2)), X4). s2cA(plus(X1, plus(X2, 0)), plus(X1, X2)). s2cA(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(plus(X1, X2), X5), qcB(X3, X6, X5, X4)). s2cA(plus(X1, plus(X2, X3)), X4) :- s2cA(plus(plus(X2, X3), X1), X4). s2cA(plus(X1, plus(X2, X3)), X4) :- ','(s2cA(X1, X5), qcB(plus(X2, X3), X6, X5, X4)). s2cA(plus(plus(X1, X2), X3), X4) :- s2cA(plus(plus(X3, X1), X2), X4). s2cA(plus(X1, X2), X3) :- s2cA(plus(X1, X2), X3). s2cA(plus(0, X1), X1). s2cA(plus(X1, X2), X3) :- ','(s2cA(X2, X4), qcB(X1, X5, X4, X3)). s2cA(plus(X1, s(X2)), s(X3)) :- ','(isNatcD(s(X2)), ','(isNatcD(X1), addcF(X2, X1, X3))). s2cA(plus(X1, 0), X1) :- ','(isNatcD(0), isNatcD(X1)). s2cA(plus(X1, 0), X1). s2cA(plus(X1, X2), X3) :- ','(s2cA(X1, X4), qcB(X2, X5, X4, X3)). s2cA(plus(X1, X2), X3) :- ','(isNatcD(X1), ','(isNatcD(X2), addcF(X1, X2, X3))). isNatcD(s(X1)) :- isNatcD(X1). isNatcD(0). qcB(X1, X2, X3, X4) :- ','(s2cA(X1, X2), s2cA(plus(X3, X2), X4)). addcC(s(X1), X2, X3, s(X4)) :- addcC(X1, X2, X3, X4). addcC(0, X1, X2, plus(X1, X2)). addcF(s(X1), X2, s(X3)) :- addcF(X1, X2, X3). addcF(0, X1, X1). Afs: s2A(x1, x2) = s2A(x1) ---------------------------------------- (133) TriplesToPiDPProof (SOUND) We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes: s2A_in_2: (b,f) s2cA_in_2: (b,f) isNatcD_in_1: (b) addcF_in_3: (b,b,f) qcB_in_4: (b,f,b,f) pB_in_4: (b,f,b,f) isNatD_in_1: (b) addF_in_3: (b,b,f) Transforming TRIPLES into the following Term Rewriting System: Pi DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4))), X5) -> U7_GA(X1, X2, X3, X4, X5, s2A_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4))), X5) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4), X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U8_GA(X1, X2, X3, X4, s2A_in_ga(plus(X3, plus(X1, X2)), X4)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(X3, plus(X1, X2)), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U9_GA(X1, X2, X3, X4, s2A_in_ga(plus(X1, X2), X5)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(X1, X2), X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U10_GA(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) U10_GA(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U11_GA(X1, X2, X3, X4, pB_in_gaga(X3, X6, X5, X4)) U10_GA(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> PB_IN_GAGA(X3, X6, X5, X4) PB_IN_GAGA(X1, X2, X3, X4) -> U2_GAGA(X1, X2, X3, X4, s2A_in_ga(X1, X2)) PB_IN_GAGA(X1, X2, X3, X4) -> S2A_IN_GA(X1, X2) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U12_GA(X1, X2, X3, X4, s2A_in_ga(plus(plus(X2, X3), X1), X4)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(plus(X2, X3), X1), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U13_GA(X1, X2, X3, X4, s2A_in_ga(X1, X5)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(X1, X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U14_GA(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) U14_GA(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U15_GA(X1, X2, X3, X4, pB_in_gaga(plus(X2, X3), X6, X5, X4)) U14_GA(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> PB_IN_GAGA(plus(X2, X3), X6, X5, X4) PB_IN_GAGA(X1, X2, X3, X4) -> U3_GAGA(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U3_GAGA(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U4_GAGA(X1, X2, X3, X4, s2A_in_ga(plus(X3, X2), X4)) U3_GAGA(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> S2A_IN_GA(plus(X3, X2), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U16_GA(X1, X2, X3, X4, isNatD_in_g(X1)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> ISNATD_IN_G(X1) ISNATD_IN_G(s(X1)) -> U1_G(X1, isNatD_in_g(X1)) ISNATD_IN_G(s(X1)) -> ISNATD_IN_G(X1) S2A_IN_GA(plus(plus(X1, X2), X3), X4) -> U17_GA(X1, X2, X3, X4, s2A_in_ga(plus(plus(X3, X1), X2), X4)) S2A_IN_GA(plus(plus(X1, X2), X3), X4) -> S2A_IN_GA(plus(plus(X3, X1), X2), X4) S2A_IN_GA(plus(X1, X2), X3) -> U18_GA(X1, X2, X3, s2A_in_ga(plus(X1, X2), X3)) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(plus(X1, X2), X3) S2A_IN_GA(plus(X1, X2), X3) -> U19_GA(X1, X2, X3, s2A_in_ga(X2, X4)) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(X2, X4) S2A_IN_GA(plus(X1, X2), X3) -> U20_GA(X1, X2, X3, s2cA_in_ga(X2, X4)) U20_GA(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U21_GA(X1, X2, X3, pB_in_gaga(X1, X5, X4, X3)) U20_GA(X1, X2, X3, s2cA_out_ga(X2, X4)) -> PB_IN_GAGA(X1, X5, X4, X3) S2A_IN_GA(plus(X1, X2), X3) -> U22_GA(X1, X2, X3, isNatD_in_g(X2)) S2A_IN_GA(plus(X1, X2), X3) -> ISNATD_IN_G(X2) S2A_IN_GA(plus(X1, X2), X3) -> U23_GA(X1, X2, X3, isNatcD_in_g(X2)) U23_GA(X1, X2, X3, isNatcD_out_g(X2)) -> U24_GA(X1, X2, X3, isNatD_in_g(X1)) U23_GA(X1, X2, X3, isNatcD_out_g(X2)) -> ISNATD_IN_G(X1) S2A_IN_GA(plus(X1, s(X2)), s(X3)) -> U25_GA(X1, X2, X3, isNatcD_in_g(s(X2))) U25_GA(X1, X2, X3, isNatcD_out_g(s(X2))) -> U26_GA(X1, X2, X3, isNatcD_in_g(X1)) U26_GA(X1, X2, X3, isNatcD_out_g(X1)) -> U27_GA(X1, X2, X3, addF_in_gga(X2, X1, X3)) U26_GA(X1, X2, X3, isNatcD_out_g(X1)) -> ADDF_IN_GGA(X2, X1, X3) ADDF_IN_GGA(s(X1), X2, s(X3)) -> U6_GGA(X1, X2, X3, addF_in_gga(X1, X2, X3)) ADDF_IN_GGA(s(X1), X2, s(X3)) -> ADDF_IN_GGA(X1, X2, X3) S2A_IN_GA(plus(X1, X2), X3) -> U28_GA(X1, X2, X3, s2A_in_ga(X1, X4)) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(X1, X4) S2A_IN_GA(plus(X1, X2), X3) -> U29_GA(X1, X2, X3, s2cA_in_ga(X1, X4)) U29_GA(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U30_GA(X1, X2, X3, pB_in_gaga(X2, X5, X4, X3)) U29_GA(X1, X2, X3, s2cA_out_ga(X1, X4)) -> PB_IN_GAGA(X2, X5, X4, X3) S2A_IN_GA(plus(X1, X2), X3) -> U31_GA(X1, X2, X3, isNatD_in_g(X1)) S2A_IN_GA(plus(X1, X2), X3) -> ISNATD_IN_G(X1) S2A_IN_GA(plus(X1, X2), X3) -> U32_GA(X1, X2, X3, isNatcD_in_g(X1)) U32_GA(X1, X2, X3, isNatcD_out_g(X1)) -> U33_GA(X1, X2, X3, isNatD_in_g(X2)) U32_GA(X1, X2, X3, isNatcD_out_g(X1)) -> ISNATD_IN_G(X2) U32_GA(X1, X2, X3, isNatcD_out_g(X1)) -> U34_GA(X1, X2, X3, isNatcD_in_g(X2)) U34_GA(X1, X2, X3, isNatcD_out_g(X2)) -> U35_GA(X1, X2, X3, addF_in_gga(X1, X2, X3)) U34_GA(X1, X2, X3, isNatcD_out_g(X2)) -> ADDF_IN_GGA(X1, X2, X3) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4))), X5) -> U37_ga(X1, X2, X3, X4, X5, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U38_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, plus(X1, X2)), X4)) s2cA_in_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U39_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U41_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X2, X3), X1), X4)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U42_ga(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) s2cA_in_ga(plus(plus(X1, X2), X3), X4) -> U44_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X3, X1), X2), X4)) s2cA_in_ga(plus(X1, X2), X3) -> U45_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2), X3)) s2cA_in_ga(plus(0, X1), X1) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2), X3) -> U46_ga(X1, X2, X3, s2cA_in_ga(X2, X4)) s2cA_in_ga(plus(X1, s(X2)), s(X3)) -> U48_ga(X1, X2, X3, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, X3, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, X3, isNatcD_in_g(X1)) U49_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U50_ga(X1, X2, X3, addcF_in_gga(X2, X1, X3)) addcF_in_gga(s(X1), X2, s(X3)) -> U62_gga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) addcF_in_gga(0, X1, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, X3, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0), X1) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0), X1) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2), X3) -> U53_ga(X1, X2, X3, s2cA_in_ga(X1, X4)) s2cA_in_ga(plus(X1, X2), X3) -> U55_ga(X1, X2, X3, isNatcD_in_g(X1)) U55_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U56_ga(X1, X2, X3, isNatcD_in_g(X2)) U56_ga(X1, X2, X3, isNatcD_out_g(X2)) -> U57_ga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) U57_ga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, X3, qcB_in_gaga(X2, X5, X4, X3)) qcB_in_gaga(X1, X2, X3, X4) -> U59_gaga(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U59_gaga(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, X2), X4)) U60_gaga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, X3, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, X3, qcB_in_gaga(X1, X5, X4, X3)) U47_ga(X1, X2, X3, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, X4, qcB_in_gaga(plus(X2, X3), X6, X5, X4)) U43_ga(X1, X2, X3, X4, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, X4, qcB_in_gaga(X3, X6, X5, X4)) U40_ga(X1, X2, X3, X4, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, X5, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The argument filtering Pi contains the following mapping: s2A_in_ga(x1, x2) = s2A_in_ga(x1) plus(x1, x2) = plus(x1, x2) s2cA_in_ga(x1, x2) = s2cA_in_ga(x1) U37_ga(x1, x2, x3, x4, x5, x6) = U37_ga(x1, x2, x3, x4, x6) U38_ga(x1, x2, x3, x4, x5) = U38_ga(x1, x2, x3, x5) 0 = 0 s2cA_out_ga(x1, x2) = s2cA_out_ga(x1, x2) U39_ga(x1, x2, x3, x4, x5) = U39_ga(x1, x2, x3, x5) U41_ga(x1, x2, x3, x4, x5) = U41_ga(x1, x2, x3, x5) U42_ga(x1, x2, x3, x4, x5) = U42_ga(x1, x2, x3, x5) U44_ga(x1, x2, x3, x4, x5) = U44_ga(x1, x2, x3, x5) U45_ga(x1, x2, x3, x4) = U45_ga(x1, x2, x4) U46_ga(x1, x2, x3, x4) = U46_ga(x1, x2, x4) s(x1) = s(x1) U48_ga(x1, x2, x3, x4) = U48_ga(x1, x2, x4) isNatcD_in_g(x1) = isNatcD_in_g(x1) U58_g(x1, x2) = U58_g(x1, x2) isNatcD_out_g(x1) = isNatcD_out_g(x1) U49_ga(x1, x2, x3, x4) = U49_ga(x1, x2, x4) U50_ga(x1, x2, x3, x4) = U50_ga(x1, x2, x4) addcF_in_gga(x1, x2, x3) = addcF_in_gga(x1, x2) U62_gga(x1, x2, x3, x4) = U62_gga(x1, x2, x4) addcF_out_gga(x1, x2, x3) = addcF_out_gga(x1, x2, x3) U51_ga(x1, x2) = U51_ga(x1, x2) U52_ga(x1, x2) = U52_ga(x1, x2) U53_ga(x1, x2, x3, x4) = U53_ga(x1, x2, x4) U55_ga(x1, x2, x3, x4) = U55_ga(x1, x2, x4) U56_ga(x1, x2, x3, x4) = U56_ga(x1, x2, x4) U57_ga(x1, x2, x3, x4) = U57_ga(x1, x2, x4) U54_ga(x1, x2, x3, x4) = U54_ga(x1, x2, x4) qcB_in_gaga(x1, x2, x3, x4) = qcB_in_gaga(x1, x3) U59_gaga(x1, x2, x3, x4, x5) = U59_gaga(x1, x3, x5) U60_gaga(x1, x2, x3, x4, x5) = U60_gaga(x1, x2, x3, x5) qcB_out_gaga(x1, x2, x3, x4) = qcB_out_gaga(x1, x2, x3, x4) U47_ga(x1, x2, x3, x4) = U47_ga(x1, x2, x4) U43_ga(x1, x2, x3, x4, x5) = U43_ga(x1, x2, x3, x5) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x1, x2, x3, x5) pB_in_gaga(x1, x2, x3, x4) = pB_in_gaga(x1, x3) isNatD_in_g(x1) = isNatD_in_g(x1) addF_in_gga(x1, x2, x3) = addF_in_gga(x1, x2) S2A_IN_GA(x1, x2) = S2A_IN_GA(x1) U7_GA(x1, x2, x3, x4, x5, x6) = U7_GA(x1, x2, x3, x4, x6) U8_GA(x1, x2, x3, x4, x5) = U8_GA(x1, x2, x3, x5) U9_GA(x1, x2, x3, x4, x5) = U9_GA(x1, x2, x3, x5) U10_GA(x1, x2, x3, x4, x5) = U10_GA(x1, x2, x3, x5) U11_GA(x1, x2, x3, x4, x5) = U11_GA(x1, x2, x3, x5) PB_IN_GAGA(x1, x2, x3, x4) = PB_IN_GAGA(x1, x3) U2_GAGA(x1, x2, x3, x4, x5) = U2_GAGA(x1, x3, x5) U12_GA(x1, x2, x3, x4, x5) = U12_GA(x1, x2, x3, x5) U13_GA(x1, x2, x3, x4, x5) = U13_GA(x1, x2, x3, x5) U14_GA(x1, x2, x3, x4, x5) = U14_GA(x1, x2, x3, x5) U15_GA(x1, x2, x3, x4, x5) = U15_GA(x1, x2, x3, x5) U3_GAGA(x1, x2, x3, x4, x5) = U3_GAGA(x1, x3, x5) U4_GAGA(x1, x2, x3, x4, x5) = U4_GAGA(x1, x3, x5) U16_GA(x1, x2, x3, x4, x5) = U16_GA(x1, x2, x3, x5) ISNATD_IN_G(x1) = ISNATD_IN_G(x1) U1_G(x1, x2) = U1_G(x1, x2) U17_GA(x1, x2, x3, x4, x5) = U17_GA(x1, x2, x3, x5) U18_GA(x1, x2, x3, x4) = U18_GA(x1, x2, x4) U19_GA(x1, x2, x3, x4) = U19_GA(x1, x2, x4) U20_GA(x1, x2, x3, x4) = U20_GA(x1, x2, x4) U21_GA(x1, x2, x3, x4) = U21_GA(x1, x2, x4) U22_GA(x1, x2, x3, x4) = U22_GA(x1, x2, x4) U23_GA(x1, x2, x3, x4) = U23_GA(x1, x2, x4) U24_GA(x1, x2, x3, x4) = U24_GA(x1, x2, x4) U25_GA(x1, x2, x3, x4) = U25_GA(x1, x2, x4) U26_GA(x1, x2, x3, x4) = U26_GA(x1, x2, x4) U27_GA(x1, x2, x3, x4) = U27_GA(x1, x2, x4) ADDF_IN_GGA(x1, x2, x3) = ADDF_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4) = U6_GGA(x1, x2, x4) U28_GA(x1, x2, x3, x4) = U28_GA(x1, x2, x4) U29_GA(x1, x2, x3, x4) = U29_GA(x1, x2, x4) U30_GA(x1, x2, x3, x4) = U30_GA(x1, x2, x4) U31_GA(x1, x2, x3, x4) = U31_GA(x1, x2, x4) U32_GA(x1, x2, x3, x4) = U32_GA(x1, x2, x4) U33_GA(x1, x2, x3, x4) = U33_GA(x1, x2, x4) U34_GA(x1, x2, x3, x4) = U34_GA(x1, x2, x4) U35_GA(x1, x2, x3, x4) = U35_GA(x1, x2, x4) We have to consider all (P,R,Pi)-chains Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES ---------------------------------------- (134) Obligation: Pi DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4))), X5) -> U7_GA(X1, X2, X3, X4, X5, s2A_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4))), X5) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4), X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U8_GA(X1, X2, X3, X4, s2A_in_ga(plus(X3, plus(X1, X2)), X4)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(X3, plus(X1, X2)), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U9_GA(X1, X2, X3, X4, s2A_in_ga(plus(X1, X2), X5)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(X1, X2), X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U10_GA(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) U10_GA(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U11_GA(X1, X2, X3, X4, pB_in_gaga(X3, X6, X5, X4)) U10_GA(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> PB_IN_GAGA(X3, X6, X5, X4) PB_IN_GAGA(X1, X2, X3, X4) -> U2_GAGA(X1, X2, X3, X4, s2A_in_ga(X1, X2)) PB_IN_GAGA(X1, X2, X3, X4) -> S2A_IN_GA(X1, X2) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U12_GA(X1, X2, X3, X4, s2A_in_ga(plus(plus(X2, X3), X1), X4)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(plus(X2, X3), X1), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U13_GA(X1, X2, X3, X4, s2A_in_ga(X1, X5)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(X1, X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U14_GA(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) U14_GA(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U15_GA(X1, X2, X3, X4, pB_in_gaga(plus(X2, X3), X6, X5, X4)) U14_GA(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> PB_IN_GAGA(plus(X2, X3), X6, X5, X4) PB_IN_GAGA(X1, X2, X3, X4) -> U3_GAGA(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U3_GAGA(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U4_GAGA(X1, X2, X3, X4, s2A_in_ga(plus(X3, X2), X4)) U3_GAGA(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> S2A_IN_GA(plus(X3, X2), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U16_GA(X1, X2, X3, X4, isNatD_in_g(X1)) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> ISNATD_IN_G(X1) ISNATD_IN_G(s(X1)) -> U1_G(X1, isNatD_in_g(X1)) ISNATD_IN_G(s(X1)) -> ISNATD_IN_G(X1) S2A_IN_GA(plus(plus(X1, X2), X3), X4) -> U17_GA(X1, X2, X3, X4, s2A_in_ga(plus(plus(X3, X1), X2), X4)) S2A_IN_GA(plus(plus(X1, X2), X3), X4) -> S2A_IN_GA(plus(plus(X3, X1), X2), X4) S2A_IN_GA(plus(X1, X2), X3) -> U18_GA(X1, X2, X3, s2A_in_ga(plus(X1, X2), X3)) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(plus(X1, X2), X3) S2A_IN_GA(plus(X1, X2), X3) -> U19_GA(X1, X2, X3, s2A_in_ga(X2, X4)) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(X2, X4) S2A_IN_GA(plus(X1, X2), X3) -> U20_GA(X1, X2, X3, s2cA_in_ga(X2, X4)) U20_GA(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U21_GA(X1, X2, X3, pB_in_gaga(X1, X5, X4, X3)) U20_GA(X1, X2, X3, s2cA_out_ga(X2, X4)) -> PB_IN_GAGA(X1, X5, X4, X3) S2A_IN_GA(plus(X1, X2), X3) -> U22_GA(X1, X2, X3, isNatD_in_g(X2)) S2A_IN_GA(plus(X1, X2), X3) -> ISNATD_IN_G(X2) S2A_IN_GA(plus(X1, X2), X3) -> U23_GA(X1, X2, X3, isNatcD_in_g(X2)) U23_GA(X1, X2, X3, isNatcD_out_g(X2)) -> U24_GA(X1, X2, X3, isNatD_in_g(X1)) U23_GA(X1, X2, X3, isNatcD_out_g(X2)) -> ISNATD_IN_G(X1) S2A_IN_GA(plus(X1, s(X2)), s(X3)) -> U25_GA(X1, X2, X3, isNatcD_in_g(s(X2))) U25_GA(X1, X2, X3, isNatcD_out_g(s(X2))) -> U26_GA(X1, X2, X3, isNatcD_in_g(X1)) U26_GA(X1, X2, X3, isNatcD_out_g(X1)) -> U27_GA(X1, X2, X3, addF_in_gga(X2, X1, X3)) U26_GA(X1, X2, X3, isNatcD_out_g(X1)) -> ADDF_IN_GGA(X2, X1, X3) ADDF_IN_GGA(s(X1), X2, s(X3)) -> U6_GGA(X1, X2, X3, addF_in_gga(X1, X2, X3)) ADDF_IN_GGA(s(X1), X2, s(X3)) -> ADDF_IN_GGA(X1, X2, X3) S2A_IN_GA(plus(X1, X2), X3) -> U28_GA(X1, X2, X3, s2A_in_ga(X1, X4)) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(X1, X4) S2A_IN_GA(plus(X1, X2), X3) -> U29_GA(X1, X2, X3, s2cA_in_ga(X1, X4)) U29_GA(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U30_GA(X1, X2, X3, pB_in_gaga(X2, X5, X4, X3)) U29_GA(X1, X2, X3, s2cA_out_ga(X1, X4)) -> PB_IN_GAGA(X2, X5, X4, X3) S2A_IN_GA(plus(X1, X2), X3) -> U31_GA(X1, X2, X3, isNatD_in_g(X1)) S2A_IN_GA(plus(X1, X2), X3) -> ISNATD_IN_G(X1) S2A_IN_GA(plus(X1, X2), X3) -> U32_GA(X1, X2, X3, isNatcD_in_g(X1)) U32_GA(X1, X2, X3, isNatcD_out_g(X1)) -> U33_GA(X1, X2, X3, isNatD_in_g(X2)) U32_GA(X1, X2, X3, isNatcD_out_g(X1)) -> ISNATD_IN_G(X2) U32_GA(X1, X2, X3, isNatcD_out_g(X1)) -> U34_GA(X1, X2, X3, isNatcD_in_g(X2)) U34_GA(X1, X2, X3, isNatcD_out_g(X2)) -> U35_GA(X1, X2, X3, addF_in_gga(X1, X2, X3)) U34_GA(X1, X2, X3, isNatcD_out_g(X2)) -> ADDF_IN_GGA(X1, X2, X3) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4))), X5) -> U37_ga(X1, X2, X3, X4, X5, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U38_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, plus(X1, X2)), X4)) s2cA_in_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U39_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U41_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X2, X3), X1), X4)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U42_ga(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) s2cA_in_ga(plus(plus(X1, X2), X3), X4) -> U44_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X3, X1), X2), X4)) s2cA_in_ga(plus(X1, X2), X3) -> U45_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2), X3)) s2cA_in_ga(plus(0, X1), X1) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2), X3) -> U46_ga(X1, X2, X3, s2cA_in_ga(X2, X4)) s2cA_in_ga(plus(X1, s(X2)), s(X3)) -> U48_ga(X1, X2, X3, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, X3, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, X3, isNatcD_in_g(X1)) U49_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U50_ga(X1, X2, X3, addcF_in_gga(X2, X1, X3)) addcF_in_gga(s(X1), X2, s(X3)) -> U62_gga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) addcF_in_gga(0, X1, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, X3, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0), X1) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0), X1) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2), X3) -> U53_ga(X1, X2, X3, s2cA_in_ga(X1, X4)) s2cA_in_ga(plus(X1, X2), X3) -> U55_ga(X1, X2, X3, isNatcD_in_g(X1)) U55_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U56_ga(X1, X2, X3, isNatcD_in_g(X2)) U56_ga(X1, X2, X3, isNatcD_out_g(X2)) -> U57_ga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) U57_ga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, X3, qcB_in_gaga(X2, X5, X4, X3)) qcB_in_gaga(X1, X2, X3, X4) -> U59_gaga(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U59_gaga(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, X2), X4)) U60_gaga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, X3, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, X3, qcB_in_gaga(X1, X5, X4, X3)) U47_ga(X1, X2, X3, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, X4, qcB_in_gaga(plus(X2, X3), X6, X5, X4)) U43_ga(X1, X2, X3, X4, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, X4, qcB_in_gaga(X3, X6, X5, X4)) U40_ga(X1, X2, X3, X4, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, X5, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The argument filtering Pi contains the following mapping: s2A_in_ga(x1, x2) = s2A_in_ga(x1) plus(x1, x2) = plus(x1, x2) s2cA_in_ga(x1, x2) = s2cA_in_ga(x1) U37_ga(x1, x2, x3, x4, x5, x6) = U37_ga(x1, x2, x3, x4, x6) U38_ga(x1, x2, x3, x4, x5) = U38_ga(x1, x2, x3, x5) 0 = 0 s2cA_out_ga(x1, x2) = s2cA_out_ga(x1, x2) U39_ga(x1, x2, x3, x4, x5) = U39_ga(x1, x2, x3, x5) U41_ga(x1, x2, x3, x4, x5) = U41_ga(x1, x2, x3, x5) U42_ga(x1, x2, x3, x4, x5) = U42_ga(x1, x2, x3, x5) U44_ga(x1, x2, x3, x4, x5) = U44_ga(x1, x2, x3, x5) U45_ga(x1, x2, x3, x4) = U45_ga(x1, x2, x4) U46_ga(x1, x2, x3, x4) = U46_ga(x1, x2, x4) s(x1) = s(x1) U48_ga(x1, x2, x3, x4) = U48_ga(x1, x2, x4) isNatcD_in_g(x1) = isNatcD_in_g(x1) U58_g(x1, x2) = U58_g(x1, x2) isNatcD_out_g(x1) = isNatcD_out_g(x1) U49_ga(x1, x2, x3, x4) = U49_ga(x1, x2, x4) U50_ga(x1, x2, x3, x4) = U50_ga(x1, x2, x4) addcF_in_gga(x1, x2, x3) = addcF_in_gga(x1, x2) U62_gga(x1, x2, x3, x4) = U62_gga(x1, x2, x4) addcF_out_gga(x1, x2, x3) = addcF_out_gga(x1, x2, x3) U51_ga(x1, x2) = U51_ga(x1, x2) U52_ga(x1, x2) = U52_ga(x1, x2) U53_ga(x1, x2, x3, x4) = U53_ga(x1, x2, x4) U55_ga(x1, x2, x3, x4) = U55_ga(x1, x2, x4) U56_ga(x1, x2, x3, x4) = U56_ga(x1, x2, x4) U57_ga(x1, x2, x3, x4) = U57_ga(x1, x2, x4) U54_ga(x1, x2, x3, x4) = U54_ga(x1, x2, x4) qcB_in_gaga(x1, x2, x3, x4) = qcB_in_gaga(x1, x3) U59_gaga(x1, x2, x3, x4, x5) = U59_gaga(x1, x3, x5) U60_gaga(x1, x2, x3, x4, x5) = U60_gaga(x1, x2, x3, x5) qcB_out_gaga(x1, x2, x3, x4) = qcB_out_gaga(x1, x2, x3, x4) U47_ga(x1, x2, x3, x4) = U47_ga(x1, x2, x4) U43_ga(x1, x2, x3, x4, x5) = U43_ga(x1, x2, x3, x5) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x1, x2, x3, x5) pB_in_gaga(x1, x2, x3, x4) = pB_in_gaga(x1, x3) isNatD_in_g(x1) = isNatD_in_g(x1) addF_in_gga(x1, x2, x3) = addF_in_gga(x1, x2) S2A_IN_GA(x1, x2) = S2A_IN_GA(x1) U7_GA(x1, x2, x3, x4, x5, x6) = U7_GA(x1, x2, x3, x4, x6) U8_GA(x1, x2, x3, x4, x5) = U8_GA(x1, x2, x3, x5) U9_GA(x1, x2, x3, x4, x5) = U9_GA(x1, x2, x3, x5) U10_GA(x1, x2, x3, x4, x5) = U10_GA(x1, x2, x3, x5) U11_GA(x1, x2, x3, x4, x5) = U11_GA(x1, x2, x3, x5) PB_IN_GAGA(x1, x2, x3, x4) = PB_IN_GAGA(x1, x3) U2_GAGA(x1, x2, x3, x4, x5) = U2_GAGA(x1, x3, x5) U12_GA(x1, x2, x3, x4, x5) = U12_GA(x1, x2, x3, x5) U13_GA(x1, x2, x3, x4, x5) = U13_GA(x1, x2, x3, x5) U14_GA(x1, x2, x3, x4, x5) = U14_GA(x1, x2, x3, x5) U15_GA(x1, x2, x3, x4, x5) = U15_GA(x1, x2, x3, x5) U3_GAGA(x1, x2, x3, x4, x5) = U3_GAGA(x1, x3, x5) U4_GAGA(x1, x2, x3, x4, x5) = U4_GAGA(x1, x3, x5) U16_GA(x1, x2, x3, x4, x5) = U16_GA(x1, x2, x3, x5) ISNATD_IN_G(x1) = ISNATD_IN_G(x1) U1_G(x1, x2) = U1_G(x1, x2) U17_GA(x1, x2, x3, x4, x5) = U17_GA(x1, x2, x3, x5) U18_GA(x1, x2, x3, x4) = U18_GA(x1, x2, x4) U19_GA(x1, x2, x3, x4) = U19_GA(x1, x2, x4) U20_GA(x1, x2, x3, x4) = U20_GA(x1, x2, x4) U21_GA(x1, x2, x3, x4) = U21_GA(x1, x2, x4) U22_GA(x1, x2, x3, x4) = U22_GA(x1, x2, x4) U23_GA(x1, x2, x3, x4) = U23_GA(x1, x2, x4) U24_GA(x1, x2, x3, x4) = U24_GA(x1, x2, x4) U25_GA(x1, x2, x3, x4) = U25_GA(x1, x2, x4) U26_GA(x1, x2, x3, x4) = U26_GA(x1, x2, x4) U27_GA(x1, x2, x3, x4) = U27_GA(x1, x2, x4) ADDF_IN_GGA(x1, x2, x3) = ADDF_IN_GGA(x1, x2) U6_GGA(x1, x2, x3, x4) = U6_GGA(x1, x2, x4) U28_GA(x1, x2, x3, x4) = U28_GA(x1, x2, x4) U29_GA(x1, x2, x3, x4) = U29_GA(x1, x2, x4) U30_GA(x1, x2, x3, x4) = U30_GA(x1, x2, x4) U31_GA(x1, x2, x3, x4) = U31_GA(x1, x2, x4) U32_GA(x1, x2, x3, x4) = U32_GA(x1, x2, x4) U33_GA(x1, x2, x3, x4) = U33_GA(x1, x2, x4) U34_GA(x1, x2, x3, x4) = U34_GA(x1, x2, x4) U35_GA(x1, x2, x3, x4) = U35_GA(x1, x2, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (135) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 36 less nodes. ---------------------------------------- (136) Complex Obligation (AND) ---------------------------------------- (137) Obligation: Pi DP problem: The TRS P consists of the following rules: ADDF_IN_GGA(s(X1), X2, s(X3)) -> ADDF_IN_GGA(X1, X2, X3) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4))), X5) -> U37_ga(X1, X2, X3, X4, X5, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U38_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, plus(X1, X2)), X4)) s2cA_in_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U39_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U41_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X2, X3), X1), X4)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U42_ga(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) s2cA_in_ga(plus(plus(X1, X2), X3), X4) -> U44_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X3, X1), X2), X4)) s2cA_in_ga(plus(X1, X2), X3) -> U45_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2), X3)) s2cA_in_ga(plus(0, X1), X1) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2), X3) -> U46_ga(X1, X2, X3, s2cA_in_ga(X2, X4)) s2cA_in_ga(plus(X1, s(X2)), s(X3)) -> U48_ga(X1, X2, X3, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, X3, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, X3, isNatcD_in_g(X1)) U49_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U50_ga(X1, X2, X3, addcF_in_gga(X2, X1, X3)) addcF_in_gga(s(X1), X2, s(X3)) -> U62_gga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) addcF_in_gga(0, X1, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, X3, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0), X1) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0), X1) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2), X3) -> U53_ga(X1, X2, X3, s2cA_in_ga(X1, X4)) s2cA_in_ga(plus(X1, X2), X3) -> U55_ga(X1, X2, X3, isNatcD_in_g(X1)) U55_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U56_ga(X1, X2, X3, isNatcD_in_g(X2)) U56_ga(X1, X2, X3, isNatcD_out_g(X2)) -> U57_ga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) U57_ga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, X3, qcB_in_gaga(X2, X5, X4, X3)) qcB_in_gaga(X1, X2, X3, X4) -> U59_gaga(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U59_gaga(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, X2), X4)) U60_gaga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, X3, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, X3, qcB_in_gaga(X1, X5, X4, X3)) U47_ga(X1, X2, X3, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, X4, qcB_in_gaga(plus(X2, X3), X6, X5, X4)) U43_ga(X1, X2, X3, X4, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, X4, qcB_in_gaga(X3, X6, X5, X4)) U40_ga(X1, X2, X3, X4, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, X5, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The argument filtering Pi contains the following mapping: plus(x1, x2) = plus(x1, x2) s2cA_in_ga(x1, x2) = s2cA_in_ga(x1) U37_ga(x1, x2, x3, x4, x5, x6) = U37_ga(x1, x2, x3, x4, x6) U38_ga(x1, x2, x3, x4, x5) = U38_ga(x1, x2, x3, x5) 0 = 0 s2cA_out_ga(x1, x2) = s2cA_out_ga(x1, x2) U39_ga(x1, x2, x3, x4, x5) = U39_ga(x1, x2, x3, x5) U41_ga(x1, x2, x3, x4, x5) = U41_ga(x1, x2, x3, x5) U42_ga(x1, x2, x3, x4, x5) = U42_ga(x1, x2, x3, x5) U44_ga(x1, x2, x3, x4, x5) = U44_ga(x1, x2, x3, x5) U45_ga(x1, x2, x3, x4) = U45_ga(x1, x2, x4) U46_ga(x1, x2, x3, x4) = U46_ga(x1, x2, x4) s(x1) = s(x1) U48_ga(x1, x2, x3, x4) = U48_ga(x1, x2, x4) isNatcD_in_g(x1) = isNatcD_in_g(x1) U58_g(x1, x2) = U58_g(x1, x2) isNatcD_out_g(x1) = isNatcD_out_g(x1) U49_ga(x1, x2, x3, x4) = U49_ga(x1, x2, x4) U50_ga(x1, x2, x3, x4) = U50_ga(x1, x2, x4) addcF_in_gga(x1, x2, x3) = addcF_in_gga(x1, x2) U62_gga(x1, x2, x3, x4) = U62_gga(x1, x2, x4) addcF_out_gga(x1, x2, x3) = addcF_out_gga(x1, x2, x3) U51_ga(x1, x2) = U51_ga(x1, x2) U52_ga(x1, x2) = U52_ga(x1, x2) U53_ga(x1, x2, x3, x4) = U53_ga(x1, x2, x4) U55_ga(x1, x2, x3, x4) = U55_ga(x1, x2, x4) U56_ga(x1, x2, x3, x4) = U56_ga(x1, x2, x4) U57_ga(x1, x2, x3, x4) = U57_ga(x1, x2, x4) U54_ga(x1, x2, x3, x4) = U54_ga(x1, x2, x4) qcB_in_gaga(x1, x2, x3, x4) = qcB_in_gaga(x1, x3) U59_gaga(x1, x2, x3, x4, x5) = U59_gaga(x1, x3, x5) U60_gaga(x1, x2, x3, x4, x5) = U60_gaga(x1, x2, x3, x5) qcB_out_gaga(x1, x2, x3, x4) = qcB_out_gaga(x1, x2, x3, x4) U47_ga(x1, x2, x3, x4) = U47_ga(x1, x2, x4) U43_ga(x1, x2, x3, x4, x5) = U43_ga(x1, x2, x3, x5) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x1, x2, x3, x5) ADDF_IN_GGA(x1, x2, x3) = ADDF_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (138) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (139) Obligation: Pi DP problem: The TRS P consists of the following rules: ADDF_IN_GGA(s(X1), X2, s(X3)) -> ADDF_IN_GGA(X1, X2, X3) R is empty. The argument filtering Pi contains the following mapping: s(x1) = s(x1) ADDF_IN_GGA(x1, x2, x3) = ADDF_IN_GGA(x1, x2) We have to consider all (P,R,Pi)-chains ---------------------------------------- (140) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (141) Obligation: Q DP problem: The TRS P consists of the following rules: ADDF_IN_GGA(s(X1), X2) -> ADDF_IN_GGA(X1, X2) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (142) 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: *ADDF_IN_GGA(s(X1), X2) -> ADDF_IN_GGA(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (143) YES ---------------------------------------- (144) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNATD_IN_G(s(X1)) -> ISNATD_IN_G(X1) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4))), X5) -> U37_ga(X1, X2, X3, X4, X5, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U38_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, plus(X1, X2)), X4)) s2cA_in_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U39_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U41_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X2, X3), X1), X4)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U42_ga(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) s2cA_in_ga(plus(plus(X1, X2), X3), X4) -> U44_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X3, X1), X2), X4)) s2cA_in_ga(plus(X1, X2), X3) -> U45_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2), X3)) s2cA_in_ga(plus(0, X1), X1) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2), X3) -> U46_ga(X1, X2, X3, s2cA_in_ga(X2, X4)) s2cA_in_ga(plus(X1, s(X2)), s(X3)) -> U48_ga(X1, X2, X3, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, X3, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, X3, isNatcD_in_g(X1)) U49_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U50_ga(X1, X2, X3, addcF_in_gga(X2, X1, X3)) addcF_in_gga(s(X1), X2, s(X3)) -> U62_gga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) addcF_in_gga(0, X1, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, X3, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0), X1) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0), X1) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2), X3) -> U53_ga(X1, X2, X3, s2cA_in_ga(X1, X4)) s2cA_in_ga(plus(X1, X2), X3) -> U55_ga(X1, X2, X3, isNatcD_in_g(X1)) U55_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U56_ga(X1, X2, X3, isNatcD_in_g(X2)) U56_ga(X1, X2, X3, isNatcD_out_g(X2)) -> U57_ga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) U57_ga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, X3, qcB_in_gaga(X2, X5, X4, X3)) qcB_in_gaga(X1, X2, X3, X4) -> U59_gaga(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U59_gaga(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, X2), X4)) U60_gaga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, X3, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, X3, qcB_in_gaga(X1, X5, X4, X3)) U47_ga(X1, X2, X3, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, X4, qcB_in_gaga(plus(X2, X3), X6, X5, X4)) U43_ga(X1, X2, X3, X4, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, X4, qcB_in_gaga(X3, X6, X5, X4)) U40_ga(X1, X2, X3, X4, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, X5, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The argument filtering Pi contains the following mapping: plus(x1, x2) = plus(x1, x2) s2cA_in_ga(x1, x2) = s2cA_in_ga(x1) U37_ga(x1, x2, x3, x4, x5, x6) = U37_ga(x1, x2, x3, x4, x6) U38_ga(x1, x2, x3, x4, x5) = U38_ga(x1, x2, x3, x5) 0 = 0 s2cA_out_ga(x1, x2) = s2cA_out_ga(x1, x2) U39_ga(x1, x2, x3, x4, x5) = U39_ga(x1, x2, x3, x5) U41_ga(x1, x2, x3, x4, x5) = U41_ga(x1, x2, x3, x5) U42_ga(x1, x2, x3, x4, x5) = U42_ga(x1, x2, x3, x5) U44_ga(x1, x2, x3, x4, x5) = U44_ga(x1, x2, x3, x5) U45_ga(x1, x2, x3, x4) = U45_ga(x1, x2, x4) U46_ga(x1, x2, x3, x4) = U46_ga(x1, x2, x4) s(x1) = s(x1) U48_ga(x1, x2, x3, x4) = U48_ga(x1, x2, x4) isNatcD_in_g(x1) = isNatcD_in_g(x1) U58_g(x1, x2) = U58_g(x1, x2) isNatcD_out_g(x1) = isNatcD_out_g(x1) U49_ga(x1, x2, x3, x4) = U49_ga(x1, x2, x4) U50_ga(x1, x2, x3, x4) = U50_ga(x1, x2, x4) addcF_in_gga(x1, x2, x3) = addcF_in_gga(x1, x2) U62_gga(x1, x2, x3, x4) = U62_gga(x1, x2, x4) addcF_out_gga(x1, x2, x3) = addcF_out_gga(x1, x2, x3) U51_ga(x1, x2) = U51_ga(x1, x2) U52_ga(x1, x2) = U52_ga(x1, x2) U53_ga(x1, x2, x3, x4) = U53_ga(x1, x2, x4) U55_ga(x1, x2, x3, x4) = U55_ga(x1, x2, x4) U56_ga(x1, x2, x3, x4) = U56_ga(x1, x2, x4) U57_ga(x1, x2, x3, x4) = U57_ga(x1, x2, x4) U54_ga(x1, x2, x3, x4) = U54_ga(x1, x2, x4) qcB_in_gaga(x1, x2, x3, x4) = qcB_in_gaga(x1, x3) U59_gaga(x1, x2, x3, x4, x5) = U59_gaga(x1, x3, x5) U60_gaga(x1, x2, x3, x4, x5) = U60_gaga(x1, x2, x3, x5) qcB_out_gaga(x1, x2, x3, x4) = qcB_out_gaga(x1, x2, x3, x4) U47_ga(x1, x2, x3, x4) = U47_ga(x1, x2, x4) U43_ga(x1, x2, x3, x4, x5) = U43_ga(x1, x2, x3, x5) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x1, x2, x3, x5) ISNATD_IN_G(x1) = ISNATD_IN_G(x1) We have to consider all (P,R,Pi)-chains ---------------------------------------- (145) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (146) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNATD_IN_G(s(X1)) -> ISNATD_IN_G(X1) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (147) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (148) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATD_IN_G(s(X1)) -> ISNATD_IN_G(X1) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (149) 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: *ISNATD_IN_G(s(X1)) -> ISNATD_IN_G(X1) The graph contains the following edges 1 > 1 ---------------------------------------- (150) YES ---------------------------------------- (151) Obligation: Pi DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(X3, plus(X1, X2)), X4) S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4))), X5) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4), X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(X1, X2), X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U10_GA(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) U10_GA(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> PB_IN_GAGA(X3, X6, X5, X4) PB_IN_GAGA(X1, X2, X3, X4) -> S2A_IN_GA(X1, X2) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(plus(plus(X2, X3), X1), X4) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> S2A_IN_GA(X1, X5) S2A_IN_GA(plus(X1, plus(X2, X3)), X4) -> U14_GA(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) U14_GA(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> PB_IN_GAGA(plus(X2, X3), X6, X5, X4) PB_IN_GAGA(X1, X2, X3, X4) -> U3_GAGA(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U3_GAGA(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> S2A_IN_GA(plus(X3, X2), X4) S2A_IN_GA(plus(plus(X1, X2), X3), X4) -> S2A_IN_GA(plus(plus(X3, X1), X2), X4) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(plus(X1, X2), X3) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(X2, X4) S2A_IN_GA(plus(X1, X2), X3) -> U20_GA(X1, X2, X3, s2cA_in_ga(X2, X4)) U20_GA(X1, X2, X3, s2cA_out_ga(X2, X4)) -> PB_IN_GAGA(X1, X5, X4, X3) S2A_IN_GA(plus(X1, X2), X3) -> S2A_IN_GA(X1, X4) S2A_IN_GA(plus(X1, X2), X3) -> U29_GA(X1, X2, X3, s2cA_in_ga(X1, X4)) U29_GA(X1, X2, X3, s2cA_out_ga(X1, X4)) -> PB_IN_GAGA(X2, X5, X4, X3) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4))), X5) -> U37_ga(X1, X2, X3, X4, X5, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U38_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, plus(X1, X2)), X4)) s2cA_in_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U39_ga(X1, X2, X3, X4, s2cA_in_ga(plus(X1, X2), X5)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U41_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X2, X3), X1), X4)) s2cA_in_ga(plus(X1, plus(X2, X3)), X4) -> U42_ga(X1, X2, X3, X4, s2cA_in_ga(X1, X5)) s2cA_in_ga(plus(plus(X1, X2), X3), X4) -> U44_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(X3, X1), X2), X4)) s2cA_in_ga(plus(X1, X2), X3) -> U45_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2), X3)) s2cA_in_ga(plus(0, X1), X1) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2), X3) -> U46_ga(X1, X2, X3, s2cA_in_ga(X2, X4)) s2cA_in_ga(plus(X1, s(X2)), s(X3)) -> U48_ga(X1, X2, X3, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, X3, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, X3, isNatcD_in_g(X1)) U49_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U50_ga(X1, X2, X3, addcF_in_gga(X2, X1, X3)) addcF_in_gga(s(X1), X2, s(X3)) -> U62_gga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) addcF_in_gga(0, X1, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, X3, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0), X1) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0), X1) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2), X3) -> U53_ga(X1, X2, X3, s2cA_in_ga(X1, X4)) s2cA_in_ga(plus(X1, X2), X3) -> U55_ga(X1, X2, X3, isNatcD_in_g(X1)) U55_ga(X1, X2, X3, isNatcD_out_g(X1)) -> U56_ga(X1, X2, X3, isNatcD_in_g(X2)) U56_ga(X1, X2, X3, isNatcD_out_g(X2)) -> U57_ga(X1, X2, X3, addcF_in_gga(X1, X2, X3)) U57_ga(X1, X2, X3, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, X3, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, X3, qcB_in_gaga(X2, X5, X4, X3)) qcB_in_gaga(X1, X2, X3, X4) -> U59_gaga(X1, X2, X3, X4, s2cA_in_ga(X1, X2)) U59_gaga(X1, X2, X3, X4, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, X4, s2cA_in_ga(plus(X3, X2), X4)) U60_gaga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, X3, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, X3, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, X3, qcB_in_gaga(X1, X5, X4, X3)) U47_ga(X1, X2, X3, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, X4, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, X4, qcB_in_gaga(plus(X2, X3), X6, X5, X4)) U43_ga(X1, X2, X3, X4, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, X4, qcB_in_gaga(X3, X6, X5, X4)) U40_ga(X1, X2, X3, X4, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, X4, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, X5, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The argument filtering Pi contains the following mapping: plus(x1, x2) = plus(x1, x2) s2cA_in_ga(x1, x2) = s2cA_in_ga(x1) U37_ga(x1, x2, x3, x4, x5, x6) = U37_ga(x1, x2, x3, x4, x6) U38_ga(x1, x2, x3, x4, x5) = U38_ga(x1, x2, x3, x5) 0 = 0 s2cA_out_ga(x1, x2) = s2cA_out_ga(x1, x2) U39_ga(x1, x2, x3, x4, x5) = U39_ga(x1, x2, x3, x5) U41_ga(x1, x2, x3, x4, x5) = U41_ga(x1, x2, x3, x5) U42_ga(x1, x2, x3, x4, x5) = U42_ga(x1, x2, x3, x5) U44_ga(x1, x2, x3, x4, x5) = U44_ga(x1, x2, x3, x5) U45_ga(x1, x2, x3, x4) = U45_ga(x1, x2, x4) U46_ga(x1, x2, x3, x4) = U46_ga(x1, x2, x4) s(x1) = s(x1) U48_ga(x1, x2, x3, x4) = U48_ga(x1, x2, x4) isNatcD_in_g(x1) = isNatcD_in_g(x1) U58_g(x1, x2) = U58_g(x1, x2) isNatcD_out_g(x1) = isNatcD_out_g(x1) U49_ga(x1, x2, x3, x4) = U49_ga(x1, x2, x4) U50_ga(x1, x2, x3, x4) = U50_ga(x1, x2, x4) addcF_in_gga(x1, x2, x3) = addcF_in_gga(x1, x2) U62_gga(x1, x2, x3, x4) = U62_gga(x1, x2, x4) addcF_out_gga(x1, x2, x3) = addcF_out_gga(x1, x2, x3) U51_ga(x1, x2) = U51_ga(x1, x2) U52_ga(x1, x2) = U52_ga(x1, x2) U53_ga(x1, x2, x3, x4) = U53_ga(x1, x2, x4) U55_ga(x1, x2, x3, x4) = U55_ga(x1, x2, x4) U56_ga(x1, x2, x3, x4) = U56_ga(x1, x2, x4) U57_ga(x1, x2, x3, x4) = U57_ga(x1, x2, x4) U54_ga(x1, x2, x3, x4) = U54_ga(x1, x2, x4) qcB_in_gaga(x1, x2, x3, x4) = qcB_in_gaga(x1, x3) U59_gaga(x1, x2, x3, x4, x5) = U59_gaga(x1, x3, x5) U60_gaga(x1, x2, x3, x4, x5) = U60_gaga(x1, x2, x3, x5) qcB_out_gaga(x1, x2, x3, x4) = qcB_out_gaga(x1, x2, x3, x4) U47_ga(x1, x2, x3, x4) = U47_ga(x1, x2, x4) U43_ga(x1, x2, x3, x4, x5) = U43_ga(x1, x2, x3, x5) U40_ga(x1, x2, x3, x4, x5) = U40_ga(x1, x2, x3, x5) S2A_IN_GA(x1, x2) = S2A_IN_GA(x1) U10_GA(x1, x2, x3, x4, x5) = U10_GA(x1, x2, x3, x5) PB_IN_GAGA(x1, x2, x3, x4) = PB_IN_GAGA(x1, x3) U14_GA(x1, x2, x3, x4, x5) = U14_GA(x1, x2, x3, x5) U3_GAGA(x1, x2, x3, x4, x5) = U3_GAGA(x1, x3, x5) U20_GA(x1, x2, x3, x4) = U20_GA(x1, x2, x4) U29_GA(x1, x2, x3, x4) = U29_GA(x1, x2, x4) We have to consider all (P,R,Pi)-chains ---------------------------------------- (152) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (153) Obligation: Q DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X3, plus(X1, X2))) S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4)))) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X1, X2)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> U10_GA(X1, X2, X3, s2cA_in_ga(plus(X1, X2))) U10_GA(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X5)) -> PB_IN_GAGA(X3, X5) PB_IN_GAGA(X1, X3) -> S2A_IN_GA(X1) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(plus(X2, X3), X1)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(X1) S2A_IN_GA(plus(X1, plus(X2, X3))) -> U14_GA(X1, X2, X3, s2cA_in_ga(X1)) U14_GA(X1, X2, X3, s2cA_out_ga(X1, X5)) -> PB_IN_GAGA(plus(X2, X3), X5) PB_IN_GAGA(X1, X3) -> U3_GAGA(X1, X3, s2cA_in_ga(X1)) U3_GAGA(X1, X3, s2cA_out_ga(X1, X2)) -> S2A_IN_GA(plus(X3, X2)) S2A_IN_GA(plus(plus(X1, X2), X3)) -> S2A_IN_GA(plus(plus(X3, X1), X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(plus(X1, X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(X2) S2A_IN_GA(plus(X1, X2)) -> U20_GA(X1, X2, s2cA_in_ga(X2)) U20_GA(X1, X2, s2cA_out_ga(X2, X4)) -> PB_IN_GAGA(X1, X4) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(X1) S2A_IN_GA(plus(X1, X2)) -> U29_GA(X1, X2, s2cA_in_ga(X1)) U29_GA(X1, X2, s2cA_out_ga(X1, X4)) -> PB_IN_GAGA(X2, X4) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4)))) -> U37_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U38_ga(X1, X2, X3, s2cA_in_ga(plus(X3, plus(X1, X2)))) s2cA_in_ga(plus(X1, plus(X2, 0))) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U39_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U41_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X2, X3), X1))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U42_ga(X1, X2, X3, s2cA_in_ga(X1)) s2cA_in_ga(plus(plus(X1, X2), X3)) -> U44_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X3, X1), X2))) s2cA_in_ga(plus(X1, X2)) -> U45_ga(X1, X2, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(0, X1)) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2)) -> U46_ga(X1, X2, s2cA_in_ga(X2)) s2cA_in_ga(plus(X1, s(X2))) -> U48_ga(X1, X2, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, isNatcD_in_g(X1)) U49_ga(X1, X2, isNatcD_out_g(X1)) -> U50_ga(X1, X2, addcF_in_gga(X2, X1)) addcF_in_gga(s(X1), X2) -> U62_gga(X1, X2, addcF_in_gga(X1, X2)) addcF_in_gga(0, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0)) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2)) -> U53_ga(X1, X2, s2cA_in_ga(X1)) s2cA_in_ga(plus(X1, X2)) -> U55_ga(X1, X2, isNatcD_in_g(X1)) U55_ga(X1, X2, isNatcD_out_g(X1)) -> U56_ga(X1, X2, isNatcD_in_g(X2)) U56_ga(X1, X2, isNatcD_out_g(X2)) -> U57_ga(X1, X2, addcF_in_gga(X1, X2)) U57_ga(X1, X2, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, qcB_in_gaga(X2, X4)) qcB_in_gaga(X1, X3) -> U59_gaga(X1, X3, s2cA_in_ga(X1)) U59_gaga(X1, X3, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, s2cA_in_ga(plus(X3, X2))) U60_gaga(X1, X2, X3, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, qcB_in_gaga(X1, X4)) U47_ga(X1, X2, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, qcB_in_gaga(plus(X2, X3), X5)) U43_ga(X1, X2, X3, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, qcB_in_gaga(X3, X5)) U40_ga(X1, X2, X3, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The set Q consists of the following terms: s2cA_in_ga(x0) isNatcD_in_g(x0) U58_g(x0, x1) U48_ga(x0, x1, x2) U49_ga(x0, x1, x2) addcF_in_gga(x0, x1) U62_gga(x0, x1, x2) U50_ga(x0, x1, x2) U51_ga(x0, x1) U52_ga(x0, x1) U55_ga(x0, x1, x2) U56_ga(x0, x1, x2) U57_ga(x0, x1, x2) U53_ga(x0, x1, x2) qcB_in_gaga(x0, x1) U59_gaga(x0, x1, x2) U60_gaga(x0, x1, x2, x3) U54_ga(x0, x1, x2) U46_ga(x0, x1, x2) U47_ga(x0, x1, x2) U45_ga(x0, x1, x2) U44_ga(x0, x1, x2, x3) U42_ga(x0, x1, x2, x3) U43_ga(x0, x1, x2, x3) U41_ga(x0, x1, x2, x3) U39_ga(x0, x1, x2, x3) U40_ga(x0, x1, x2, x3) U38_ga(x0, x1, x2, x3) U37_ga(x0, x1, x2, x3, x4) We have to consider all (P,Q,R)-chains. ---------------------------------------- (154) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X1, X2)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> U10_GA(X1, X2, X3, s2cA_in_ga(plus(X1, X2))) U10_GA(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X5)) -> PB_IN_GAGA(X3, X5) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(X1) S2A_IN_GA(plus(X1, plus(X2, X3))) -> U14_GA(X1, X2, X3, s2cA_in_ga(X1)) U3_GAGA(X1, X3, s2cA_out_ga(X1, X2)) -> S2A_IN_GA(plus(X3, X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(X2) S2A_IN_GA(plus(X1, X2)) -> U20_GA(X1, X2, s2cA_in_ga(X2)) U20_GA(X1, X2, s2cA_out_ga(X2, X4)) -> PB_IN_GAGA(X1, X4) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(X1) S2A_IN_GA(plus(X1, X2)) -> U29_GA(X1, X2, s2cA_in_ga(X1)) U29_GA(X1, X2, s2cA_out_ga(X1, X4)) -> PB_IN_GAGA(X2, X4) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( U10_GA_4(x_1, ..., x_4) ) = 2x_3 + 2x_4 + 2 POL( U14_GA_4(x_1, ..., x_4) ) = 2x_2 + 2x_3 + 2x_4 POL( U20_GA_3(x_1, ..., x_3) ) = 2x_1 + 2x_3 + 1 POL( U29_GA_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 POL( U3_GAGA_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( s2cA_in_ga_1(x_1) ) = max{0, x_1 - 1} POL( plus_2(x_1, x_2) ) = x_1 + x_2 + 1 POL( U37_ga_5(x_1, ..., x_5) ) = x_5 POL( U38_ga_4(x_1, ..., x_4) ) = x_4 POL( 0 ) = 2 POL( s2cA_out_ga_2(x_1, x_2) ) = x_2 + 2 POL( U39_ga_4(x_1, ..., x_4) ) = x_3 + x_4 POL( U41_ga_4(x_1, ..., x_4) ) = x_4 POL( U42_ga_4(x_1, ..., x_4) ) = x_2 + x_3 + x_4 POL( U44_ga_4(x_1, ..., x_4) ) = x_4 POL( U45_ga_3(x_1, ..., x_3) ) = x_3 POL( U46_ga_3(x_1, ..., x_3) ) = max{0, x_1 + x_3 - 1} POL( s_1(x_1) ) = x_1 + 2 POL( U48_ga_3(x_1, ..., x_3) ) = x_1 + x_2 + 2 POL( isNatcD_in_g_1(x_1) ) = max{0, -2} POL( U51_ga_2(x_1, x_2) ) = x_1 + 2 POL( U53_ga_3(x_1, ..., x_3) ) = x_2 + x_3 POL( U55_ga_3(x_1, ..., x_3) ) = x_1 + x_2 POL( U54_ga_3(x_1, ..., x_3) ) = x_3 + 1 POL( qcB_in_gaga_2(x_1, x_2) ) = x_1 + x_2 POL( qcB_out_gaga_4(x_1, ..., x_4) ) = x_4 + 1 POL( U59_gaga_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U60_gaga_4(x_1, ..., x_4) ) = max{0, x_4 - 1} POL( U47_ga_3(x_1, ..., x_3) ) = x_3 + 1 POL( U43_ga_4(x_1, ..., x_4) ) = x_4 + 1 POL( U40_ga_4(x_1, ..., x_4) ) = x_4 + 2 POL( U49_ga_3(x_1, ..., x_3) ) = x_1 + x_2 + 2 POL( U52_ga_2(x_1, x_2) ) = x_1 + 2 POL( U56_ga_3(x_1, ..., x_3) ) = x_1 + x_2 POL( U58_g_2(x_1, x_2) ) = 0 POL( isNatcD_out_g_1(x_1) ) = max{0, -2} POL( U50_ga_3(x_1, ..., x_3) ) = x_3 + 2 POL( addcF_in_gga_2(x_1, x_2) ) = x_1 + x_2 POL( U57_ga_3(x_1, ..., x_3) ) = x_3 POL( U62_gga_3(x_1, ..., x_3) ) = x_3 + 2 POL( addcF_out_gga_3(x_1, ..., x_3) ) = x_3 + 2 POL( S2A_IN_GA_1(x_1) ) = 2x_1 + 2 POL( PB_IN_GAGA_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4)))) -> U37_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U38_ga(X1, X2, X3, s2cA_in_ga(plus(X3, plus(X1, X2)))) s2cA_in_ga(plus(X1, plus(X2, 0))) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U39_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U41_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X2, X3), X1))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U42_ga(X1, X2, X3, s2cA_in_ga(X1)) s2cA_in_ga(plus(plus(X1, X2), X3)) -> U44_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X3, X1), X2))) s2cA_in_ga(plus(X1, X2)) -> U45_ga(X1, X2, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(0, X1)) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2)) -> U46_ga(X1, X2, s2cA_in_ga(X2)) s2cA_in_ga(plus(X1, s(X2))) -> U48_ga(X1, X2, isNatcD_in_g(s(X2))) s2cA_in_ga(plus(X1, 0)) -> U51_ga(X1, isNatcD_in_g(0)) s2cA_in_ga(plus(X1, 0)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2)) -> U53_ga(X1, X2, s2cA_in_ga(X1)) s2cA_in_ga(plus(X1, X2)) -> U55_ga(X1, X2, isNatcD_in_g(X1)) U38_ga(X1, X2, X3, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) U41_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U44_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U45_ga(X1, X2, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, qcB_in_gaga(X2, X4)) U54_ga(X1, X2, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) qcB_in_gaga(X1, X3) -> U59_gaga(X1, X3, s2cA_in_ga(X1)) U59_gaga(X1, X3, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, s2cA_in_ga(plus(X3, X2))) U60_gaga(X1, X2, X3, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U46_ga(X1, X2, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, qcB_in_gaga(X1, X4)) U47_ga(X1, X2, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U42_ga(X1, X2, X3, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, qcB_in_gaga(plus(X2, X3), X5)) U43_ga(X1, X2, X3, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, qcB_in_gaga(X3, X5)) U40_ga(X1, X2, X3, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U48_ga(X1, X2, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, isNatcD_in_g(X1)) U49_ga(X1, X2, isNatcD_out_g(X1)) -> U50_ga(X1, X2, addcF_in_gga(X2, X1)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) U55_ga(X1, X2, isNatcD_out_g(X1)) -> U56_ga(X1, X2, isNatcD_in_g(X2)) U56_ga(X1, X2, isNatcD_out_g(X2)) -> U57_ga(X1, X2, addcF_in_gga(X1, X2)) addcF_in_gga(s(X1), X2) -> U62_gga(X1, X2, addcF_in_gga(X1, X2)) addcF_in_gga(0, X1) -> addcF_out_gga(0, X1, X1) U50_ga(X1, X2, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) U57_ga(X1, X2, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U62_gga(X1, X2, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) ---------------------------------------- (155) Obligation: Q DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X3, plus(X1, X2))) S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4)))) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4)) PB_IN_GAGA(X1, X3) -> S2A_IN_GA(X1) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(plus(X2, X3), X1)) U14_GA(X1, X2, X3, s2cA_out_ga(X1, X5)) -> PB_IN_GAGA(plus(X2, X3), X5) PB_IN_GAGA(X1, X3) -> U3_GAGA(X1, X3, s2cA_in_ga(X1)) S2A_IN_GA(plus(plus(X1, X2), X3)) -> S2A_IN_GA(plus(plus(X3, X1), X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(plus(X1, X2)) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4)))) -> U37_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U38_ga(X1, X2, X3, s2cA_in_ga(plus(X3, plus(X1, X2)))) s2cA_in_ga(plus(X1, plus(X2, 0))) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U39_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U41_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X2, X3), X1))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U42_ga(X1, X2, X3, s2cA_in_ga(X1)) s2cA_in_ga(plus(plus(X1, X2), X3)) -> U44_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X3, X1), X2))) s2cA_in_ga(plus(X1, X2)) -> U45_ga(X1, X2, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(0, X1)) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2)) -> U46_ga(X1, X2, s2cA_in_ga(X2)) s2cA_in_ga(plus(X1, s(X2))) -> U48_ga(X1, X2, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, isNatcD_in_g(X1)) U49_ga(X1, X2, isNatcD_out_g(X1)) -> U50_ga(X1, X2, addcF_in_gga(X2, X1)) addcF_in_gga(s(X1), X2) -> U62_gga(X1, X2, addcF_in_gga(X1, X2)) addcF_in_gga(0, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0)) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2)) -> U53_ga(X1, X2, s2cA_in_ga(X1)) s2cA_in_ga(plus(X1, X2)) -> U55_ga(X1, X2, isNatcD_in_g(X1)) U55_ga(X1, X2, isNatcD_out_g(X1)) -> U56_ga(X1, X2, isNatcD_in_g(X2)) U56_ga(X1, X2, isNatcD_out_g(X2)) -> U57_ga(X1, X2, addcF_in_gga(X1, X2)) U57_ga(X1, X2, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, qcB_in_gaga(X2, X4)) qcB_in_gaga(X1, X3) -> U59_gaga(X1, X3, s2cA_in_ga(X1)) U59_gaga(X1, X3, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, s2cA_in_ga(plus(X3, X2))) U60_gaga(X1, X2, X3, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, qcB_in_gaga(X1, X4)) U47_ga(X1, X2, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, qcB_in_gaga(plus(X2, X3), X5)) U43_ga(X1, X2, X3, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, qcB_in_gaga(X3, X5)) U40_ga(X1, X2, X3, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The set Q consists of the following terms: s2cA_in_ga(x0) isNatcD_in_g(x0) U58_g(x0, x1) U48_ga(x0, x1, x2) U49_ga(x0, x1, x2) addcF_in_gga(x0, x1) U62_gga(x0, x1, x2) U50_ga(x0, x1, x2) U51_ga(x0, x1) U52_ga(x0, x1) U55_ga(x0, x1, x2) U56_ga(x0, x1, x2) U57_ga(x0, x1, x2) U53_ga(x0, x1, x2) qcB_in_gaga(x0, x1) U59_gaga(x0, x1, x2) U60_gaga(x0, x1, x2, x3) U54_ga(x0, x1, x2) U46_ga(x0, x1, x2) U47_ga(x0, x1, x2) U45_ga(x0, x1, x2) U44_ga(x0, x1, x2, x3) U42_ga(x0, x1, x2, x3) U43_ga(x0, x1, x2, x3) U41_ga(x0, x1, x2, x3) U39_ga(x0, x1, x2, x3) U40_ga(x0, x1, x2, x3) U38_ga(x0, x1, x2, x3) U37_ga(x0, x1, x2, x3, x4) We have to consider all (P,Q,R)-chains. ---------------------------------------- (156) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes. ---------------------------------------- (157) Obligation: Q DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4)))) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X3, plus(X1, X2))) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(plus(X2, X3), X1)) S2A_IN_GA(plus(plus(X1, X2), X3)) -> S2A_IN_GA(plus(plus(X3, X1), X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(plus(X1, X2)) The TRS R consists of the following rules: s2cA_in_ga(plus(X1, plus(X2, plus(X3, X4)))) -> U37_ga(X1, X2, X3, X4, s2cA_in_ga(plus(plus(plus(X1, X2), X3), X4))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U38_ga(X1, X2, X3, s2cA_in_ga(plus(X3, plus(X1, X2)))) s2cA_in_ga(plus(X1, plus(X2, 0))) -> s2cA_out_ga(plus(X1, plus(X2, 0)), plus(X1, X2)) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U39_ga(X1, X2, X3, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U41_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X2, X3), X1))) s2cA_in_ga(plus(X1, plus(X2, X3))) -> U42_ga(X1, X2, X3, s2cA_in_ga(X1)) s2cA_in_ga(plus(plus(X1, X2), X3)) -> U44_ga(X1, X2, X3, s2cA_in_ga(plus(plus(X3, X1), X2))) s2cA_in_ga(plus(X1, X2)) -> U45_ga(X1, X2, s2cA_in_ga(plus(X1, X2))) s2cA_in_ga(plus(0, X1)) -> s2cA_out_ga(plus(0, X1), X1) s2cA_in_ga(plus(X1, X2)) -> U46_ga(X1, X2, s2cA_in_ga(X2)) s2cA_in_ga(plus(X1, s(X2))) -> U48_ga(X1, X2, isNatcD_in_g(s(X2))) isNatcD_in_g(s(X1)) -> U58_g(X1, isNatcD_in_g(X1)) isNatcD_in_g(0) -> isNatcD_out_g(0) U58_g(X1, isNatcD_out_g(X1)) -> isNatcD_out_g(s(X1)) U48_ga(X1, X2, isNatcD_out_g(s(X2))) -> U49_ga(X1, X2, isNatcD_in_g(X1)) U49_ga(X1, X2, isNatcD_out_g(X1)) -> U50_ga(X1, X2, addcF_in_gga(X2, X1)) addcF_in_gga(s(X1), X2) -> U62_gga(X1, X2, addcF_in_gga(X1, X2)) addcF_in_gga(0, X1) -> addcF_out_gga(0, X1, X1) U62_gga(X1, X2, addcF_out_gga(X1, X2, X3)) -> addcF_out_gga(s(X1), X2, s(X3)) U50_ga(X1, X2, addcF_out_gga(X2, X1, X3)) -> s2cA_out_ga(plus(X1, s(X2)), s(X3)) s2cA_in_ga(plus(X1, 0)) -> U51_ga(X1, isNatcD_in_g(0)) U51_ga(X1, isNatcD_out_g(0)) -> U52_ga(X1, isNatcD_in_g(X1)) U52_ga(X1, isNatcD_out_g(X1)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, 0)) -> s2cA_out_ga(plus(X1, 0), X1) s2cA_in_ga(plus(X1, X2)) -> U53_ga(X1, X2, s2cA_in_ga(X1)) s2cA_in_ga(plus(X1, X2)) -> U55_ga(X1, X2, isNatcD_in_g(X1)) U55_ga(X1, X2, isNatcD_out_g(X1)) -> U56_ga(X1, X2, isNatcD_in_g(X2)) U56_ga(X1, X2, isNatcD_out_g(X2)) -> U57_ga(X1, X2, addcF_in_gga(X1, X2)) U57_ga(X1, X2, addcF_out_gga(X1, X2, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U53_ga(X1, X2, s2cA_out_ga(X1, X4)) -> U54_ga(X1, X2, qcB_in_gaga(X2, X4)) qcB_in_gaga(X1, X3) -> U59_gaga(X1, X3, s2cA_in_ga(X1)) U59_gaga(X1, X3, s2cA_out_ga(X1, X2)) -> U60_gaga(X1, X2, X3, s2cA_in_ga(plus(X3, X2))) U60_gaga(X1, X2, X3, s2cA_out_ga(plus(X3, X2), X4)) -> qcB_out_gaga(X1, X2, X3, X4) U54_ga(X1, X2, qcB_out_gaga(X2, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U46_ga(X1, X2, s2cA_out_ga(X2, X4)) -> U47_ga(X1, X2, qcB_in_gaga(X1, X4)) U47_ga(X1, X2, qcB_out_gaga(X1, X5, X4, X3)) -> s2cA_out_ga(plus(X1, X2), X3) U45_ga(X1, X2, s2cA_out_ga(plus(X1, X2), X3)) -> s2cA_out_ga(plus(X1, X2), X3) U44_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X3, X1), X2), X4)) -> s2cA_out_ga(plus(plus(X1, X2), X3), X4) U42_ga(X1, X2, X3, s2cA_out_ga(X1, X5)) -> U43_ga(X1, X2, X3, qcB_in_gaga(plus(X2, X3), X5)) U43_ga(X1, X2, X3, qcB_out_gaga(plus(X2, X3), X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U41_ga(X1, X2, X3, s2cA_out_ga(plus(plus(X2, X3), X1), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U39_ga(X1, X2, X3, s2cA_out_ga(plus(X1, X2), X5)) -> U40_ga(X1, X2, X3, qcB_in_gaga(X3, X5)) U40_ga(X1, X2, X3, qcB_out_gaga(X3, X6, X5, X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U38_ga(X1, X2, X3, s2cA_out_ga(plus(X3, plus(X1, X2)), X4)) -> s2cA_out_ga(plus(X1, plus(X2, X3)), X4) U37_ga(X1, X2, X3, X4, s2cA_out_ga(plus(plus(plus(X1, X2), X3), X4), X5)) -> s2cA_out_ga(plus(X1, plus(X2, plus(X3, X4))), X5) The set Q consists of the following terms: s2cA_in_ga(x0) isNatcD_in_g(x0) U58_g(x0, x1) U48_ga(x0, x1, x2) U49_ga(x0, x1, x2) addcF_in_gga(x0, x1) U62_gga(x0, x1, x2) U50_ga(x0, x1, x2) U51_ga(x0, x1) U52_ga(x0, x1) U55_ga(x0, x1, x2) U56_ga(x0, x1, x2) U57_ga(x0, x1, x2) U53_ga(x0, x1, x2) qcB_in_gaga(x0, x1) U59_gaga(x0, x1, x2) U60_gaga(x0, x1, x2, x3) U54_ga(x0, x1, x2) U46_ga(x0, x1, x2) U47_ga(x0, x1, x2) U45_ga(x0, x1, x2) U44_ga(x0, x1, x2, x3) U42_ga(x0, x1, x2, x3) U43_ga(x0, x1, x2, x3) U41_ga(x0, x1, x2, x3) U39_ga(x0, x1, x2, x3) U40_ga(x0, x1, x2, x3) U38_ga(x0, x1, x2, x3) U37_ga(x0, x1, x2, x3, x4) We have to consider all (P,Q,R)-chains. ---------------------------------------- (158) 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. ---------------------------------------- (159) Obligation: Q DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4)))) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X3, plus(X1, X2))) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(plus(X2, X3), X1)) S2A_IN_GA(plus(plus(X1, X2), X3)) -> S2A_IN_GA(plus(plus(X3, X1), X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(plus(X1, X2)) R is empty. The set Q consists of the following terms: s2cA_in_ga(x0) isNatcD_in_g(x0) U58_g(x0, x1) U48_ga(x0, x1, x2) U49_ga(x0, x1, x2) addcF_in_gga(x0, x1) U62_gga(x0, x1, x2) U50_ga(x0, x1, x2) U51_ga(x0, x1) U52_ga(x0, x1) U55_ga(x0, x1, x2) U56_ga(x0, x1, x2) U57_ga(x0, x1, x2) U53_ga(x0, x1, x2) qcB_in_gaga(x0, x1) U59_gaga(x0, x1, x2) U60_gaga(x0, x1, x2, x3) U54_ga(x0, x1, x2) U46_ga(x0, x1, x2) U47_ga(x0, x1, x2) U45_ga(x0, x1, x2) U44_ga(x0, x1, x2, x3) U42_ga(x0, x1, x2, x3) U43_ga(x0, x1, x2, x3) U41_ga(x0, x1, x2, x3) U39_ga(x0, x1, x2, x3) U40_ga(x0, x1, x2, x3) U38_ga(x0, x1, x2, x3) U37_ga(x0, x1, x2, x3, x4) We have to consider all (P,Q,R)-chains. ---------------------------------------- (160) 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]. s2cA_in_ga(x0) isNatcD_in_g(x0) U58_g(x0, x1) U48_ga(x0, x1, x2) U49_ga(x0, x1, x2) addcF_in_gga(x0, x1) U62_gga(x0, x1, x2) U50_ga(x0, x1, x2) U51_ga(x0, x1) U52_ga(x0, x1) U55_ga(x0, x1, x2) U56_ga(x0, x1, x2) U57_ga(x0, x1, x2) U53_ga(x0, x1, x2) qcB_in_gaga(x0, x1) U59_gaga(x0, x1, x2) U60_gaga(x0, x1, x2, x3) U54_ga(x0, x1, x2) U46_ga(x0, x1, x2) U47_ga(x0, x1, x2) U45_ga(x0, x1, x2) U44_ga(x0, x1, x2, x3) U42_ga(x0, x1, x2, x3) U43_ga(x0, x1, x2, x3) U41_ga(x0, x1, x2, x3) U39_ga(x0, x1, x2, x3) U40_ga(x0, x1, x2, x3) U38_ga(x0, x1, x2, x3) U37_ga(x0, x1, x2, x3, x4) ---------------------------------------- (161) Obligation: Q DP problem: The TRS P consists of the following rules: S2A_IN_GA(plus(X1, plus(X2, plus(X3, X4)))) -> S2A_IN_GA(plus(plus(plus(X1, X2), X3), X4)) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(X3, plus(X1, X2))) S2A_IN_GA(plus(X1, plus(X2, X3))) -> S2A_IN_GA(plus(plus(X2, X3), X1)) S2A_IN_GA(plus(plus(X1, X2), X3)) -> S2A_IN_GA(plus(plus(X3, X1), X2)) S2A_IN_GA(plus(X1, X2)) -> S2A_IN_GA(plus(X1, X2)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains.