/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.pl /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern 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, 2 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, 0 ms] (23) QDP (24) QDPOrderProof [EQUIVALENT, 69 ms] (25) QDP (26) QDPQMonotonicMRRProof [EQUIVALENT, 63 ms] (27) QDP (28) DependencyGraphProof [EQUIVALENT, 0 ms] (29) QDP (30) UsableRulesProof [EQUIVALENT, 0 ms] (31) QDP (32) QReductionProof [EQUIVALENT, 0 ms] (33) QDP (34) NonTerminationLoopProof [COMPLETE, 0 ms] (35) NO (36) PrologToPiTRSProof [SOUND, 0 ms] (37) PiTRS (38) DependencyPairsProof [EQUIVALENT, 0 ms] (39) PiDP (40) DependencyGraphProof [EQUIVALENT, 0 ms] (41) AND (42) PiDP (43) UsableRulesProof [EQUIVALENT, 0 ms] (44) PiDP (45) PiDPToQDPProof [SOUND, 0 ms] (46) QDP (47) QDPSizeChangeProof [EQUIVALENT, 0 ms] (48) YES (49) PiDP (50) UsableRulesProof [EQUIVALENT, 0 ms] (51) PiDP (52) PiDPToQDPProof [EQUIVALENT, 0 ms] (53) QDP (54) QDPSizeChangeProof [EQUIVALENT, 0 ms] (55) YES (56) PiDP (57) PiDPToQDPProof [SOUND, 10 ms] (58) QDP (59) QDPQMonotonicMRRProof [EQUIVALENT, 97 ms] (60) QDP (61) UsableRulesProof [EQUIVALENT, 0 ms] (62) QDP (63) QReductionProof [EQUIVALENT, 0 ms] (64) QDP (65) QDPQMonotonicMRRProof [EQUIVALENT, 57 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, 48 ms] (76) QTRS (77) DependencyPairsProof [EQUIVALENT, 0 ms] (78) QDP (79) DependencyGraphProof [EQUIVALENT, 0 ms] (80) AND (81) QDP (82) UsableRulesProof [EQUIVALENT, 1 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, 52 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, 29 ms] (101) AND (102) IRSwT (103) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (104) TRUE (105) IRSwT (106) IRSwTSimpleDependencyGraphProof [EQUIVALENT, 0 ms] (107) IRSwT (108) IntTRSCompressionProof [EQUIVALENT, 19 ms] (109) IRSwT (110) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (111) IRSwT (112) IRSwTTerminationDigraphProof [EQUIVALENT, 7 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, 6 ms] (124) IRSwT (125) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (126) IRSwT (127) IRSwTTerminationDigraphProof [EQUIVALENT, 16 ms] (128) IRSwT (129) PrologToDTProblemTransformerProof [SOUND, 130 ms] (130) TRIPLES (131) UndefinedPredicateInTriplesTransformerProof [SOUND, 0 ms] (132) TRIPLES (133) TriplesToPiDPProof [SOUND, 89 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, 24 ms] (153) QDP (154) QDPOrderProof [EQUIVALENT, 956 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(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 ---------------------------------------- (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(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) ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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 ---------------------------------------- (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(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. ---------------------------------------- (24) 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)) ---------------------------------------- (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(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. ---------------------------------------- (26) 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(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)) Strictly oriented rules of the TRS R: s2_in_ga(plus(X, 0)) -> s2_out_ga(X) 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))) Used ordering: Polynomial interpretation [POLO]: POL(0) = 2 POL(S2_IN_GA(x_1)) = 2*x_1 POL(U10_gga(x_1)) = x_1 POL(U1_ga(x_1)) = x_1 POL(U2_ga(x_1)) = x_1 POL(U3_GA(x_1, x_2)) = 2*x_1 + x_2 POL(U3_ga(x_1, x_2)) = 2*x_1 + x_2 POL(U4_GA(x_1, x_2)) = 2*x_1 + x_2 POL(U4_ga(x_1, x_2)) = 2*x_1 + x_2 POL(U5_ga(x_1)) = x_1 POL(U6_ga(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 POL(U7_ga(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 POL(U8_ga(x_1)) = 2*x_1 POL(U9_g(x_1)) = 0 POL(add_in_gga(x_1, x_2)) = x_1 + x_2 POL(add_out_gga(x_1)) = 2 + x_1 POL(isNat_in_g(x_1)) = 2*x_1 POL(isNat_out_g) = 0 POL(plus(x_1, x_2)) = x_1 + x_2 POL(s(x_1)) = x_1 POL(s2_in_ga(x_1)) = 2*x_1 POL(s2_out_ga(x_1)) = 1 + 2*x_1 ---------------------------------------- (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(Y, s2_in_ga(X)) 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, 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)) 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. ---------------------------------------- (28) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (29) 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, 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)) 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. ---------------------------------------- (30) 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. ---------------------------------------- (31) 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. ---------------------------------------- (32) 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) ---------------------------------------- (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)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (34) 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)). ---------------------------------------- (35) NO ---------------------------------------- (36) 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 ---------------------------------------- (37) 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) ---------------------------------------- (38) 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 ---------------------------------------- (39) 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 ---------------------------------------- (40) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 11 less nodes. ---------------------------------------- (41) Complex Obligation (AND) ---------------------------------------- (42) 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 ---------------------------------------- (43) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (44) 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 ---------------------------------------- (45) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (46) 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. ---------------------------------------- (47) 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 ---------------------------------------- (48) YES ---------------------------------------- (49) 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 ---------------------------------------- (50) UsableRulesProof (EQUIVALENT) For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. ---------------------------------------- (51) Obligation: Pi DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) R is empty. Pi is empty. We have to consider all (P,R,Pi)-chains ---------------------------------------- (52) PiDPToQDPProof (EQUIVALENT) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (53) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (54) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *ISNAT_IN_G(s(X)) -> ISNAT_IN_G(X) The graph contains the following edges 1 > 1 ---------------------------------------- (55) YES ---------------------------------------- (56) 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 ---------------------------------------- (57) PiDPToQDPProof (SOUND) Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. ---------------------------------------- (58) 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. ---------------------------------------- (59) 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 ---------------------------------------- (60) 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. ---------------------------------------- (61) 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. ---------------------------------------- (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(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. ---------------------------------------- (63) 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) ---------------------------------------- (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(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. ---------------------------------------- (65) 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 ---------------------------------------- (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(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. ---------------------------------------- (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(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. ---------------------------------------- (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, 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. ---------------------------------------- (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, 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) ---------------------------------------- (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": 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": { "45": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "24": { "goal": [{ "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "25": { "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": [] } }, "391": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "type": "Nodes", "392": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T95) (add T94 T95 T97))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "393": { "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": [] } }, "394": { "goal": [{ "clause": 5, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "351": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "395": { "goal": [{ "clause": 6, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "352": { "goal": [{ "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "374": { "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": [] } }, "473": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "353": { "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": [] } }, "375": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "474": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "354": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "398": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T104"], "free": [], "exprvars": [] } }, "475": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "355": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "356": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "378": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T66 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T66"], "free": ["X68"], "exprvars": [] } }, "357": { "goal": [{ "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "358": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "414": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "415": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "459": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "416": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "38": { "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": [] } }, "380": { "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": [] } }, "384": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T67 X69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T67"], "free": ["X69"], "exprvars": [] } }, "461": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T95"], "free": [], "exprvars": [] } }, "385": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T73 T80) T69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T73", "T80" ], "free": [], "exprvars": [] } }, "462": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "463": { "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": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "3": { "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": [] } }, "388": { "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": [] } }, "389": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "466": { "goal": [{ "clause": 7, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "346": { "goal": [{ "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "467": { "goal": [{ "clause": 8, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "347": { "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": [] } }, "468": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T123 T124 T126)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T123", "T124" ], "free": [], "exprvars": [] } }, "469": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "349": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T42 T41) T44)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T41", "T42" ], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 3, "label": "CASE" }, { "from": 3, "to": 24, "label": "PARALLEL" }, { "from": 3, "to": 25, "label": "PARALLEL" }, { "from": 24, "to": 38, "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": 24, "to": 45, "label": "EVAL-BACKTRACK" }, { "from": 25, "to": 346, "label": "PARALLEL" }, { "from": 25, "to": 347, "label": "PARALLEL" }, { "from": 38, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(plus(T19, T20), T21)\nT2 -> T23" }, { "from": 346, "to": 349, "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": 346, "to": 351, "label": "EVAL-BACKTRACK" }, { "from": 347, "to": 352, "label": "PARALLEL" }, { "from": 347, "to": 353, "label": "PARALLEL" }, { "from": 349, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(T42, T41)\nT2 -> T44" }, { "from": 352, "to": 354, "label": "EVAL with clause\ns2(plus(X48, 0), X48).\nand substitutionX48 -> T53,\nT1 -> plus(T53, 0),\nT2 -> T53" }, { "from": 352, "to": 355, "label": "EVAL-BACKTRACK" }, { "from": 353, "to": 357, "label": "PARALLEL" }, { "from": 353, "to": 358, "label": "PARALLEL" }, { "from": 354, "to": 356, "label": "SUCCESS" }, { "from": 357, "to": 374, "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": 357, "to": 375, "label": "EVAL-BACKTRACK" }, { "from": 358, "to": 388, "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": 358, "to": 389, "label": "EVAL-BACKTRACK" }, { "from": 374, "to": 378, "label": "SPLIT 1" }, { "from": 374, "to": 380, "label": "SPLIT 2\nnew knowledge:\nT66 is ground\nT73 is ground\nreplacements:X68 -> T73" }, { "from": 378, "to": 2, "label": "INSTANCE with matching:\nT1 -> T66\nT2 -> X68" }, { "from": 380, "to": 384, "label": "SPLIT 1" }, { "from": 380, "to": 385, "label": "SPLIT 2\nnew knowledge:\nT67 is ground\nT80 is ground\nreplacements:X69 -> T80" }, { "from": 384, "to": 2, "label": "INSTANCE with matching:\nT1 -> T67\nT2 -> X69" }, { "from": 385, "to": 2, "label": "INSTANCE with matching:\nT1 -> plus(T73, T80)\nT2 -> T69" }, { "from": 388, "to": 391, "label": "SPLIT 1" }, { "from": 388, "to": 392, "label": "SPLIT 2\nnew knowledge:\nT94 is ground" }, { "from": 391, "to": 393, "label": "CASE" }, { "from": 392, "to": 461, "label": "SPLIT 1" }, { "from": 392, "to": 462, "label": "SPLIT 2\nnew knowledge:\nT95 is ground" }, { "from": 393, "to": 394, "label": "PARALLEL" }, { "from": 393, "to": 395, "label": "PARALLEL" }, { "from": 394, "to": 398, "label": "EVAL with clause\nisNat(s(X109)) :- isNat(X109).\nand substitutionX109 -> T104,\nT94 -> s(T104)" }, { "from": 394, "to": 414, "label": "EVAL-BACKTRACK" }, { "from": 395, "to": 415, "label": "EVAL with clause\nisNat(0).\nand substitutionT94 -> 0" }, { "from": 395, "to": 416, "label": "EVAL-BACKTRACK" }, { "from": 398, "to": 391, "label": "INSTANCE with matching:\nT94 -> T104" }, { "from": 415, "to": 459, "label": "SUCCESS" }, { "from": 461, "to": 391, "label": "INSTANCE with matching:\nT94 -> T95" }, { "from": 462, "to": 463, "label": "CASE" }, { "from": 463, "to": 466, "label": "PARALLEL" }, { "from": 463, "to": 467, "label": "PARALLEL" }, { "from": 466, "to": 468, "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": 466, "to": 469, "label": "EVAL-BACKTRACK" }, { "from": 467, "to": 473, "label": "EVAL with clause\nadd(0, X136, X136).\nand substitutionT94 -> 0,\nT95 -> T132,\nX136 -> T132,\nT97 -> T132" }, { "from": 467, "to": 474, "label": "EVAL-BACKTRACK" }, { "from": 468, "to": 462, "label": "INSTANCE with matching:\nT94 -> T123\nT95 -> T124\nT97 -> T126" }, { "from": 473, "to": 475, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (76) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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: F2_IN(plus(T19, plus(T20, T21))) -> U1^1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) F2_IN(plus(T19, plus(T20, T21))) -> F2_IN(plus(plus(T19, T20), T21)) F2_IN(plus(T41, T42)) -> U2^1(f2_in(plus(T42, T41)), plus(T41, T42)) F2_IN(plus(T41, T42)) -> F2_IN(plus(T42, T41)) F2_IN(plus(T66, T67)) -> U3^1(f374_in(T66, T67), plus(T66, T67)) F2_IN(plus(T66, T67)) -> F374_IN(T66, T67) F2_IN(plus(T94, T95)) -> U4^1(f388_in(T94, T95), plus(T94, T95)) F2_IN(plus(T94, T95)) -> F388_IN(T94, T95) F391_IN(s(T104)) -> U5^1(f391_in(T104), s(T104)) F391_IN(s(T104)) -> F391_IN(T104) F462_IN(s(T123), T124) -> U6^1(f462_in(T123, T124), s(T123), T124) F462_IN(s(T123), T124) -> F462_IN(T123, T124) F374_IN(T66, T67) -> U7^1(f2_in(T66), T66, T67) F374_IN(T66, T67) -> F2_IN(T66) U7^1(f2_out1(T73), T66, T67) -> U8^1(f380_in(T67, T73), T66, T67, T73) U7^1(f2_out1(T73), T66, T67) -> F380_IN(T67, T73) F380_IN(T67, T73) -> U9^1(f2_in(T67), T67, T73) F380_IN(T67, T73) -> F2_IN(T67) U9^1(f2_out1(T80), T67, T73) -> U10^1(f2_in(plus(T73, T80)), T67, T73, T80) U9^1(f2_out1(T80), T67, T73) -> F2_IN(plus(T73, T80)) F388_IN(T94, T95) -> U11^1(f391_in(T94), T94, T95) F388_IN(T94, T95) -> F391_IN(T94) U11^1(f391_out1, T94, T95) -> U12^1(f392_in(T95, T94), T94, T95) U11^1(f391_out1, T94, T95) -> F392_IN(T95, T94) F392_IN(T95, T94) -> U13^1(f391_in(T95), T95, T94) F392_IN(T95, T94) -> F391_IN(T95) U13^1(f391_out1, T95, T94) -> U14^1(f462_in(T94, T95), T95, T94) U13^1(f391_out1, T95, T94) -> F462_IN(T94, T95) The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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: F462_IN(s(T123), T124) -> F462_IN(T123, T124) The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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: F462_IN(s(T123), T124) -> F462_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: *F462_IN(s(T123), T124) -> F462_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: F391_IN(s(T104)) -> F391_IN(T104) The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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: F391_IN(s(T104)) -> F391_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: *F391_IN(s(T104)) -> F391_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: F2_IN(plus(T41, T42)) -> F2_IN(plus(T42, T41)) F2_IN(plus(T19, plus(T20, T21))) -> F2_IN(plus(plus(T19, T20), T21)) F2_IN(plus(T66, T67)) -> F374_IN(T66, T67) F374_IN(T66, T67) -> U7^1(f2_in(T66), T66, T67) U7^1(f2_out1(T73), T66, T67) -> F380_IN(T67, T73) F380_IN(T67, T73) -> U9^1(f2_in(T67), T67, T73) U9^1(f2_out1(T80), T67, T73) -> F2_IN(plus(T73, T80)) F380_IN(T67, T73) -> F2_IN(T67) F374_IN(T66, T67) -> F2_IN(T66) The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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. F374_IN(T66, T67) -> U7^1(f2_in(T66), T66, T67) U7^1(f2_out1(T73), T66, T67) -> F380_IN(T67, T73) F374_IN(T66, T67) -> F2_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( f2_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( f2_out1_1(x_1) ) = 2x_1 + 2 POL( U3_2(x_1, x_2) ) = x_1 + 2 POL( f374_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U4_2(x_1, x_2) ) = x_1 + 2 POL( f388_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( f374_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( f380_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( f380_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( f391_in_1(x_1) ) = 0 POL( f388_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( f391_out1 ) = 0 POL( f392_in_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( f392_out1_1(x_1) ) = 2x_1 + 2 POL( U14_3(x_1, ..., x_3) ) = x_1 + 2 POL( f462_in_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U6_3(x_1, ..., x_3) ) = 2x_2 POL( f462_out1_1(x_1) ) = 2x_1 POL( F2_IN_1(x_1) ) = max{0, 2x_1 - 1} POL( F374_IN_2(x_1, x_2) ) = 2x_1 + 2x_2 + 1 POL( F380_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: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) f391_in(0) -> f391_out1 U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U5(f391_out1, s(T104)) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) f462_in(0, T132) -> f462_out1(T132) U14(f462_out1(T97), T95, T94) -> f392_out1(T97) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) ---------------------------------------- (93) Obligation: Q DP problem: The TRS P consists of the following rules: F2_IN(plus(T41, T42)) -> F2_IN(plus(T42, T41)) F2_IN(plus(T19, plus(T20, T21))) -> F2_IN(plus(plus(T19, T20), T21)) F2_IN(plus(T66, T67)) -> F374_IN(T66, T67) F380_IN(T67, T73) -> U9^1(f2_in(T67), T67, T73) U9^1(f2_out1(T80), T67, T73) -> F2_IN(plus(T73, T80)) F380_IN(T67, T73) -> F2_IN(T67) The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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: F2_IN(plus(T19, plus(T20, T21))) -> F2_IN(plus(plus(T19, T20), T21)) F2_IN(plus(T41, T42)) -> F2_IN(plus(T42, T41)) The TRS R consists of the following rules: f2_in(plus(T19, plus(T20, T21))) -> U1(f2_in(plus(plus(T19, T20), T21)), plus(T19, plus(T20, T21))) U1(f2_out1(T23), plus(T19, plus(T20, T21))) -> f2_out1(T23) f2_in(plus(T41, T42)) -> U2(f2_in(plus(T42, T41)), plus(T41, T42)) U2(f2_out1(T44), plus(T41, T42)) -> f2_out1(T44) f2_in(plus(T53, 0)) -> f2_out1(T53) f2_in(plus(T66, T67)) -> U3(f374_in(T66, T67), plus(T66, T67)) U3(f374_out1(X68, X69, T69), plus(T66, T67)) -> f2_out1(T69) f2_in(plus(T94, T95)) -> U4(f388_in(T94, T95), plus(T94, T95)) U4(f388_out1(T97), plus(T94, T95)) -> f2_out1(T97) f391_in(s(T104)) -> U5(f391_in(T104), s(T104)) U5(f391_out1, s(T104)) -> f391_out1 f391_in(0) -> f391_out1 f462_in(s(T123), T124) -> U6(f462_in(T123, T124), s(T123), T124) U6(f462_out1(T126), s(T123), T124) -> f462_out1(s(T126)) f462_in(0, T132) -> f462_out1(T132) f374_in(T66, T67) -> U7(f2_in(T66), T66, T67) U7(f2_out1(T73), T66, T67) -> U8(f380_in(T67, T73), T66, T67, T73) U8(f380_out1(X69, T69), T66, T67, T73) -> f374_out1(T73, X69, T69) f380_in(T67, T73) -> U9(f2_in(T67), T67, T73) U9(f2_out1(T80), T67, T73) -> U10(f2_in(plus(T73, T80)), T67, T73, T80) U10(f2_out1(T69), T67, T73, T80) -> f380_out1(T80, T69) f388_in(T94, T95) -> U11(f391_in(T94), T94, T95) U11(f391_out1, T94, T95) -> U12(f392_in(T95, T94), T94, T95) U12(f392_out1(T97), T94, T95) -> f388_out1(T97) f392_in(T95, T94) -> U13(f391_in(T95), T95, T94) U13(f391_out1, T95, T94) -> U14(f462_in(T94, T95), T95, T94) U14(f462_out1(T97), T95, T94) -> f392_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: F2_IN(plus(T19, plus(T20, T21))) -> F2_IN(plus(plus(T19, T20), T21)) F2_IN(plus(T41, T42)) -> F2_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 = F2_IN(plus(T41, T42)) evaluates to t =F2_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 F2_IN(plus(T41, T42)) to F2_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": { "type": "Nodes", "470": { "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": [] } }, "372": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T42 T41) T44)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T41", "T42" ], "free": [], "exprvars": [] } }, "471": { "goal": [{ "clause": 7, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "373": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "472": { "goal": [{ "clause": 8, "scope": 3, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "452": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T104)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T104"], "free": [], "exprvars": [] } }, "453": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "399": { "goal": [{ "clause": 2, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "454": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "476": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T123 T124 T126)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T123", "T124" ], "free": [], "exprvars": [] } }, "455": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "477": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "412": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T67 X69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T67"], "free": ["X69"], "exprvars": [] } }, "456": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "413": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T73 T80) T69)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T73", "T80" ], "free": [], "exprvars": [] } }, "457": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T95"], "free": [], "exprvars": [] } }, "458": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T94 T95 T97)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "481": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "482": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "483": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "242": { "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": [] } }, "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "243": { "goal": [{ "clause": 0, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "244": { "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": [] } }, "245": { "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": [] } }, "366": { "goal": [{ "clause": 1, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "443": { "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": [] } }, "246": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "367": { "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": [] } }, "400": { "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": [] } }, "444": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "401": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "445": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "402": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "446": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (isNat T95) (add T94 T95 T97))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T94", "T95" ], "free": [], "exprvars": [] } }, "403": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "447": { "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": [] } }, "404": { "goal": [{ "clause": 3, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "448": { "goal": [{ "clause": 5, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "405": { "goal": [{ "clause": 4, "scope": 1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "449": { "goal": [{ "clause": 6, "scope": 2, "term": "(isNat T94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T94"], "free": [], "exprvars": [] } }, "406": { "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": [] } }, "407": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "408": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T66 X68)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T66"], "free": ["X68"], "exprvars": [] } }, "409": { "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": [] } } }, "edges": [ { "from": 1, "to": 242, "label": "CASE" }, { "from": 242, "to": 243, "label": "PARALLEL" }, { "from": 242, "to": 244, "label": "PARALLEL" }, { "from": 243, "to": 245, "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": 243, "to": 246, "label": "EVAL-BACKTRACK" }, { "from": 244, "to": 366, "label": "PARALLEL" }, { "from": 244, "to": 367, "label": "PARALLEL" }, { "from": 245, "to": 1, "label": "INSTANCE with matching:\nT1 -> plus(plus(T19, T20), T21)\nT2 -> T23" }, { "from": 366, "to": 372, "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": 366, "to": 373, "label": "EVAL-BACKTRACK" }, { "from": 367, "to": 399, "label": "PARALLEL" }, { "from": 367, "to": 400, "label": "PARALLEL" }, { "from": 372, "to": 1, "label": "INSTANCE with matching:\nT1 -> plus(T42, T41)\nT2 -> T44" }, { "from": 399, "to": 401, "label": "EVAL with clause\ns2(plus(X48, 0), X48).\nand substitutionX48 -> T53,\nT1 -> plus(T53, 0),\nT2 -> T53" }, { "from": 399, "to": 402, "label": "EVAL-BACKTRACK" }, { "from": 400, "to": 404, "label": "PARALLEL" }, { "from": 400, "to": 405, "label": "PARALLEL" }, { "from": 401, "to": 403, "label": "SUCCESS" }, { "from": 404, "to": 406, "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": 404, "to": 407, "label": "EVAL-BACKTRACK" }, { "from": 405, "to": 443, "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": 405, "to": 444, "label": "EVAL-BACKTRACK" }, { "from": 406, "to": 408, "label": "SPLIT 1" }, { "from": 406, "to": 409, "label": "SPLIT 2\nnew knowledge:\nT66 is ground\nT73 is ground\nreplacements:X68 -> T73" }, { "from": 408, "to": 1, "label": "INSTANCE with matching:\nT1 -> T66\nT2 -> X68" }, { "from": 409, "to": 412, "label": "SPLIT 1" }, { "from": 409, "to": 413, "label": "SPLIT 2\nnew knowledge:\nT67 is ground\nT80 is ground\nreplacements:X69 -> T80" }, { "from": 412, "to": 1, "label": "INSTANCE with matching:\nT1 -> T67\nT2 -> X69" }, { "from": 413, "to": 1, "label": "INSTANCE with matching:\nT1 -> plus(T73, T80)\nT2 -> T69" }, { "from": 443, "to": 445, "label": "SPLIT 1" }, { "from": 443, "to": 446, "label": "SPLIT 2\nnew knowledge:\nT94 is ground" }, { "from": 445, "to": 447, "label": "CASE" }, { "from": 446, "to": 457, "label": "SPLIT 1" }, { "from": 446, "to": 458, "label": "SPLIT 2\nnew knowledge:\nT95 is ground" }, { "from": 447, "to": 448, "label": "PARALLEL" }, { "from": 447, "to": 449, "label": "PARALLEL" }, { "from": 448, "to": 452, "label": "EVAL with clause\nisNat(s(X109)) :- isNat(X109).\nand substitutionX109 -> T104,\nT94 -> s(T104)" }, { "from": 448, "to": 453, "label": "EVAL-BACKTRACK" }, { "from": 449, "to": 454, "label": "EVAL with clause\nisNat(0).\nand substitutionT94 -> 0" }, { "from": 449, "to": 455, "label": "EVAL-BACKTRACK" }, { "from": 452, "to": 445, "label": "INSTANCE with matching:\nT94 -> T104" }, { "from": 454, "to": 456, "label": "SUCCESS" }, { "from": 457, "to": 445, "label": "INSTANCE with matching:\nT94 -> T95" }, { "from": 458, "to": 470, "label": "CASE" }, { "from": 470, "to": 471, "label": "PARALLEL" }, { "from": 470, "to": 472, "label": "PARALLEL" }, { "from": 471, "to": 476, "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": 471, "to": 477, "label": "EVAL-BACKTRACK" }, { "from": 472, "to": 481, "label": "EVAL with clause\nadd(0, X136, X136).\nand substitutionT94 -> 0,\nT95 -> T132,\nX136 -> T132,\nT97 -> T132" }, { "from": 472, "to": 482, "label": "EVAL-BACKTRACK" }, { "from": 476, "to": 458, "label": "INSTANCE with matching:\nT94 -> T123\nT95 -> T124\nT97 -> T126" }, { "from": 481, "to": 483, "label": "SUCCESS" } ], "type": "Graph" } } ---------------------------------------- (101) Complex Obligation (AND) ---------------------------------------- (102) Obligation: Rules: f477_out -> f471_out(T94, T95) :|: TRUE f471_in(s(T123), T124) -> f476_in(T123, T124) :|: TRUE f471_in(x, x1) -> f477_in :|: TRUE f476_out(x2, x3) -> f471_out(s(x2), x3) :|: TRUE f476_in(x4, x5) -> f458_in(x4, x5) :|: TRUE f458_out(x6, x7) -> f476_out(x6, x7) :|: TRUE f470_in(x8, x9) -> f471_in(x8, x9) :|: TRUE f470_in(x10, x11) -> f472_in(x10, x11) :|: TRUE f472_out(x12, x13) -> f470_out(x12, x13) :|: TRUE f471_out(x14, x15) -> f470_out(x14, x15) :|: TRUE f458_in(x16, x17) -> f470_in(x16, x17) :|: TRUE f470_out(x18, x19) -> f458_out(x18, x19) :|: TRUE f242_out(T1) -> f1_out(T1) :|: TRUE f1_in(x20) -> f242_in(x20) :|: TRUE f242_in(x21) -> f243_in(x21) :|: TRUE f244_out(x22) -> f242_out(x22) :|: TRUE f242_in(x23) -> f244_in(x23) :|: TRUE f243_out(x24) -> f242_out(x24) :|: TRUE f244_in(x25) -> f367_in(x25) :|: TRUE f244_in(x26) -> f366_in(x26) :|: TRUE f366_out(x27) -> f244_out(x27) :|: TRUE f367_out(x28) -> f244_out(x28) :|: TRUE f400_out(x29) -> f367_out(x29) :|: TRUE f367_in(x30) -> f400_in(x30) :|: TRUE f399_out(x31) -> f367_out(x31) :|: TRUE f367_in(x32) -> f399_in(x32) :|: TRUE f400_in(x33) -> f404_in(x33) :|: TRUE f404_out(x34) -> f400_out(x34) :|: TRUE f400_in(x35) -> f405_in(x35) :|: TRUE f405_out(x36) -> f400_out(x36) :|: TRUE f444_out -> f405_out(x37) :|: TRUE f405_in(x38) -> f444_in :|: TRUE f405_in(plus(x39, x40)) -> f443_in(x39, x40) :|: TRUE f443_out(x41, x42) -> f405_out(plus(x41, x42)) :|: TRUE f445_out(x43) -> f446_in(x44, x43) :|: TRUE f446_out(x45, x46) -> f443_out(x46, x45) :|: TRUE f443_in(x47, x48) -> f445_in(x47) :|: TRUE f446_in(x49, x50) -> f457_in(x49) :|: TRUE f458_out(x51, x52) -> f446_out(x52, x51) :|: TRUE f457_out(x53) -> f458_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: f452_in(T104) -> f445_in(T104) :|: TRUE f445_out(x) -> f452_out(x) :|: TRUE f447_in(T94) -> f448_in(T94) :|: TRUE f449_out(x1) -> f447_out(x1) :|: TRUE f448_out(x2) -> f447_out(x2) :|: TRUE f447_in(x3) -> f449_in(x3) :|: TRUE f452_out(x4) -> f448_out(s(x4)) :|: TRUE f453_out -> f448_out(x5) :|: TRUE f448_in(s(x6)) -> f452_in(x6) :|: TRUE f448_in(x7) -> f453_in :|: TRUE f447_out(x8) -> f445_out(x8) :|: TRUE f445_in(x9) -> f447_in(x9) :|: TRUE f242_out(T1) -> f1_out(T1) :|: TRUE f1_in(x10) -> f242_in(x10) :|: TRUE f242_in(x11) -> f243_in(x11) :|: TRUE f244_out(x12) -> f242_out(x12) :|: TRUE f242_in(x13) -> f244_in(x13) :|: TRUE f243_out(x14) -> f242_out(x14) :|: TRUE f244_in(x15) -> f367_in(x15) :|: TRUE f244_in(x16) -> f366_in(x16) :|: TRUE f366_out(x17) -> f244_out(x17) :|: TRUE f367_out(x18) -> f244_out(x18) :|: TRUE f400_out(x19) -> f367_out(x19) :|: TRUE f367_in(x20) -> f400_in(x20) :|: TRUE f399_out(x21) -> f367_out(x21) :|: TRUE f367_in(x22) -> f399_in(x22) :|: TRUE f400_in(x23) -> f404_in(x23) :|: TRUE f404_out(x24) -> f400_out(x24) :|: TRUE f400_in(x25) -> f405_in(x25) :|: TRUE f405_out(x26) -> f400_out(x26) :|: TRUE f444_out -> f405_out(x27) :|: TRUE f405_in(x28) -> f444_in :|: TRUE f405_in(plus(x29, x30)) -> f443_in(x29, x30) :|: TRUE f443_out(x31, x32) -> f405_out(plus(x31, x32)) :|: TRUE f445_out(x33) -> f446_in(x34, x33) :|: TRUE f446_out(x35, x36) -> f443_out(x36, x35) :|: TRUE f443_in(x37, x38) -> f445_in(x37) :|: TRUE f446_in(x39, x40) -> f457_in(x39) :|: TRUE f458_out(x41, x42) -> f446_out(x42, x41) :|: TRUE f457_out(x43) -> f458_in(x44, x43) :|: TRUE f457_in(T95) -> f445_in(T95) :|: TRUE f445_out(x45) -> f457_out(x45) :|: TRUE Start term: f1_in(T1) ---------------------------------------- (106) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f452_in(T104) -> f445_in(T104) :|: TRUE f447_in(T94) -> f448_in(T94) :|: TRUE f448_in(s(x6)) -> f452_in(x6) :|: TRUE f445_in(x9) -> f447_in(x9) :|: TRUE ---------------------------------------- (107) Obligation: Rules: f452_in(T104) -> f445_in(T104) :|: TRUE f447_in(T94) -> f448_in(T94) :|: TRUE f448_in(s(x6)) -> f452_in(x6) :|: TRUE f445_in(x9) -> f447_in(x9) :|: TRUE ---------------------------------------- (108) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (109) Obligation: Rules: f447_in(s(x6:0)) -> f447_in(x6:0) :|: TRUE ---------------------------------------- (110) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (111) Obligation: Rules: f447_in(s(x6:0)) -> f447_in(x6:0) :|: TRUE ---------------------------------------- (112) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f447_in(s(x6:0)) -> f447_in(x6:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (113) Obligation: Termination digraph: Nodes: (1) f447_in(s(x6:0)) -> f447_in(x6:0) :|: TRUE Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (114) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f447_in(VARIABLE) s(VARIABLE) Removed predefined arithmetic. ---------------------------------------- (115) Obligation: Rules: f447_in(s(x6:0)) -> f447_in(x6: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: f447_in(s(x6:0)) -> f447_in(x6: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: *f447_in(s(x6:0)) -> f447_in(x6:0) The graph contains the following edges 1 > 1 ---------------------------------------- (119) YES ---------------------------------------- (120) Obligation: Rules: f1_out(plus(plus(T19, T20), T21)) -> f245_out(T19, T20, T21) :|: TRUE f245_in(x, x1, x2) -> f1_in(plus(plus(x, x1), x2)) :|: TRUE f406_in(T66, T67) -> f408_in(T66) :|: TRUE f409_out(x3, x4) -> f406_out(x5, x3) :|: TRUE f408_out(x6) -> f409_in(x7, x8) :|: TRUE f400_out(T1) -> f367_out(T1) :|: TRUE f367_in(x9) -> f400_in(x9) :|: TRUE f399_out(x10) -> f367_out(x10) :|: TRUE f367_in(x11) -> f399_in(x11) :|: TRUE f242_out(x12) -> f1_out(x12) :|: TRUE f1_in(x13) -> f242_in(x13) :|: TRUE f413_in(T73, T80) -> f1_in(plus(T73, T80)) :|: TRUE f1_out(plus(x14, x15)) -> f413_out(x14, x15) :|: TRUE f242_in(x16) -> f243_in(x16) :|: TRUE f244_out(x17) -> f242_out(x17) :|: TRUE f242_in(x18) -> f244_in(x18) :|: TRUE f243_out(x19) -> f242_out(x19) :|: TRUE f1_out(plus(T42, T41)) -> f372_out(T42, T41) :|: TRUE f372_in(x20, x21) -> f1_in(plus(x20, x21)) :|: TRUE f1_out(x22) -> f408_out(x22) :|: TRUE f408_in(x23) -> f1_in(x23) :|: TRUE f246_out -> f243_out(x24) :|: TRUE f243_in(x25) -> f246_in :|: TRUE f245_out(x26, x27, x28) -> f243_out(plus(x26, plus(x27, x28))) :|: TRUE f243_in(plus(x29, plus(x30, x31))) -> f245_in(x29, x30, x31) :|: TRUE f406_out(x32, x33) -> f404_out(plus(x32, x33)) :|: TRUE f404_in(plus(x34, x35)) -> f406_in(x34, x35) :|: TRUE f404_in(x36) -> f407_in :|: TRUE f407_out -> f404_out(x37) :|: TRUE f1_out(x38) -> f412_out(x38) :|: TRUE f412_in(x39) -> f1_in(x39) :|: TRUE f409_in(x40, x41) -> f412_in(x40) :|: TRUE f413_out(x42, x43) -> f409_out(x44, x42) :|: TRUE f412_out(x45) -> f413_in(x46, x47) :|: TRUE f244_in(x48) -> f367_in(x48) :|: TRUE f244_in(x49) -> f366_in(x49) :|: TRUE f366_out(x50) -> f244_out(x50) :|: TRUE f367_out(x51) -> f244_out(x51) :|: TRUE f372_out(x52, x53) -> f366_out(plus(x53, x52)) :|: TRUE f366_in(x54) -> f373_in :|: TRUE f366_in(plus(x55, x56)) -> f372_in(x56, x55) :|: TRUE f373_out -> f366_out(x57) :|: TRUE f400_in(x58) -> f404_in(x58) :|: TRUE f404_out(x59) -> f400_out(x59) :|: TRUE f400_in(x60) -> f405_in(x60) :|: TRUE f405_out(x61) -> f400_out(x61) :|: TRUE Start term: f1_in(T1) ---------------------------------------- (121) IRSwTSimpleDependencyGraphProof (EQUIVALENT) Constructed simple dependency graph. Simplified to the following IRSwTs: intTRSProblem: f245_in(x, x1, x2) -> f1_in(plus(plus(x, x1), x2)) :|: TRUE f406_in(T66, T67) -> f408_in(T66) :|: TRUE f367_in(x9) -> f400_in(x9) :|: TRUE f1_in(x13) -> f242_in(x13) :|: TRUE f242_in(x16) -> f243_in(x16) :|: TRUE f242_in(x18) -> f244_in(x18) :|: TRUE f372_in(x20, x21) -> f1_in(plus(x20, x21)) :|: TRUE f408_in(x23) -> f1_in(x23) :|: TRUE f243_in(plus(x29, plus(x30, x31))) -> f245_in(x29, x30, x31) :|: TRUE f404_in(plus(x34, x35)) -> f406_in(x34, x35) :|: TRUE f244_in(x48) -> f367_in(x48) :|: TRUE f244_in(x49) -> f366_in(x49) :|: TRUE f366_in(plus(x55, x56)) -> f372_in(x56, x55) :|: TRUE f400_in(x58) -> f404_in(x58) :|: TRUE ---------------------------------------- (122) Obligation: Rules: f245_in(x, x1, x2) -> f1_in(plus(plus(x, x1), x2)) :|: TRUE f406_in(T66, T67) -> f408_in(T66) :|: TRUE f367_in(x9) -> f400_in(x9) :|: TRUE f1_in(x13) -> f242_in(x13) :|: TRUE f242_in(x16) -> f243_in(x16) :|: TRUE f242_in(x18) -> f244_in(x18) :|: TRUE f372_in(x20, x21) -> f1_in(plus(x20, x21)) :|: TRUE f408_in(x23) -> f1_in(x23) :|: TRUE f243_in(plus(x29, plus(x30, x31))) -> f245_in(x29, x30, x31) :|: TRUE f404_in(plus(x34, x35)) -> f406_in(x34, x35) :|: TRUE f244_in(x48) -> f367_in(x48) :|: TRUE f244_in(x49) -> f366_in(x49) :|: TRUE f366_in(plus(x55, x56)) -> f372_in(x56, x55) :|: TRUE f400_in(x58) -> f404_in(x58) :|: TRUE ---------------------------------------- (123) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (124) Obligation: Rules: f242_in(plus(x34:0, x35:0)) -> f242_in(x34:0) :|: TRUE f242_in(plus(x55:0, x56:0)) -> f242_in(plus(x56:0, x55:0)) :|: TRUE f242_in(plus(x29:0, plus(x30:0, x31:0))) -> f242_in(plus(plus(x29:0, x30:0), x31:0)) :|: TRUE ---------------------------------------- (125) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (126) Obligation: Rules: f242_in(plus(x34:0, x35:0)) -> f242_in(x34:0) :|: TRUE f242_in(plus(x55:0, x56:0)) -> f242_in(plus(x56:0, x55:0)) :|: TRUE f242_in(plus(x29:0, plus(x30:0, x31:0))) -> f242_in(plus(plus(x29:0, x30:0), x31:0)) :|: TRUE ---------------------------------------- (127) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f242_in(plus(x34:0, x35:0)) -> f242_in(x34:0) :|: TRUE (2) f242_in(plus(x55:0, x56:0)) -> f242_in(plus(x56:0, x55:0)) :|: TRUE (3) f242_in(plus(x29:0, plus(x30:0, x31:0))) -> f242_in(plus(plus(x29:0, x30:0), x31: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) f242_in(plus(x34:0, x35:0)) -> f242_in(x34:0) :|: TRUE (2) f242_in(plus(x55:0, x56:0)) -> f242_in(plus(x56:0, x55:0)) :|: TRUE (3) f242_in(plus(x29:0, plus(x30:0, x31:0))) -> f242_in(plus(plus(x29:0, x30:0), x31: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": 94, "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", "590": { "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": [] } }, "350": { "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": [] } }, "478": { "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": [] } }, "511": { "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": [] } }, "479": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T255)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T255"], "free": [], "exprvars": [] } }, "119": { "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": [] } }, "516": { "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": [] } }, "94": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "517": { "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": [] } }, "95": { "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": [] } }, "518": { "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": [] } }, "96": { "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": [] } }, "519": { "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": [] } }, "97": { "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": [] } }, "98": { "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": [] } }, "480": { "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": [] } }, "120": { "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": [] } }, "484": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat (plus T256 T257))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T256", "T257" ], "free": [], "exprvars": [] } }, "485": { "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": [] } }, "486": { "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": [] } }, "487": { "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": [] } }, "520": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "488": { "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": [] } }, "489": { "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": [] } }, "490": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "491": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "492": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "493": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "494": { "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": [] } }, "376": { "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": [] } }, "377": { "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": [] } }, "410": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T115 X95)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T115"], "free": ["X95"], "exprvars": [] } }, "411": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T121 T128) T117)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T121", "T128" ], "free": [], "exprvars": [] } }, "379": { "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": [] } }, "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": [] } }, "417": { "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": [] } }, "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": [] } }, "418": { "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": [] } }, "419": { "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": [] } }, "381": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "382": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "383": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "660": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "386": { "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": [] } }, "387": { "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": [] } }, "420": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat (plus T154 T155))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155" ], "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": [] } }, "421": { "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": [] } }, "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": [] } }, "422": { "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": [] } }, "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": [] } }, "423": { "goal": [{ "clause": 6, "scope": 3, "term": "(isNat (plus T154 T155))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T154", "T155" ], "free": [], "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": [] } }, "424": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "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": [] } }, "425": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T156)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "546": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "426": { "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": [] } }, "547": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "427": { "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": [] } }, "548": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "428": { "goal": [{ "clause": 5, "scope": 4, "term": "(isNat T156)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "549": { "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": [] } }, "429": { "goal": [{ "clause": 6, "scope": 4, "term": "(isNat T156)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T156"], "free": [], "exprvars": [] } }, "390": { "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": [] } }, "396": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 (plus T113 T114) X94)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T113", "T114" ], "free": ["X94"], "exprvars": [] } }, "550": { "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": [] } }, "397": { "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": [] } }, "430": { "goal": [{ "clause": -1, "scope": -1, "term": "(isNat T165)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T165"], "free": [], "exprvars": [] } }, "551": { "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": [] } }, "431": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "552": { "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": [] } }, "432": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "553": { "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": [] } }, "433": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "554": { "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": [] } }, "434": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "555": { "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": [] } }, "435": { "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": [] } }, "556": { "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": [] } }, "436": { "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": [] } }, "557": { "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": [] } }, "437": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "558": { "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": [] } }, "438": { "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": [] } }, "559": { "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": [] } }, "439": { "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": [] } }, "163": { "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": [] } }, "560": { "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": [] } }, "440": { "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": [] } }, "561": { "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": [] } }, "441": { "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": [] } }, "562": { "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": [] } }, "442": { "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": [] } }, "563": { "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": [] } }, "564": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T479 T480 T482)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } }, "565": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "566": { "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": [] } }, "567": { "goal": [{ "clause": 7, "scope": 9, "term": "(add T479 T480 T482)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } }, "568": { "goal": [{ "clause": 8, "scope": 9, "term": "(add T479 T480 T482)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T479", "T480" ], "free": [], "exprvars": [] } }, "569": { "goal": [{ "clause": -1, "scope": -1, "term": "(add T498 T499 T501)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T498", "T499" ], "free": [], "exprvars": [] } }, "570": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "175": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "450": { "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": [] } }, "571": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "451": { "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": [] } }, "572": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "573": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "574": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "575": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "576": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "577": { "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": [] } }, "578": { "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": [] } }, "579": { "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": [] } }, "580": { "goal": [{ "clause": -1, "scope": -1, "term": "(true)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "460": { "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": [] } }, "581": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "582": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "583": { "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": [] } }, "584": { "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": [] } }, "464": { "goal": [{ "clause": -1, "scope": -1, "term": "(s2 T230 X212)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T230"], "free": ["X212"], "exprvars": [] } }, "585": { "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": [] } }, "465": { "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": [] } }, "586": { "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": [] } }, "587": { "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": [] } }, "588": { "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": [] } }, "589": { "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": [] } }, "348": { "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": [] } }, "623": { "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": [] } }, "624": { "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": [] } } }, "edges": [ { "from": 94, "to": 95, "label": "CASE" }, { "from": 95, "to": 96, "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": 95, "to": 97, "label": "EVAL-BACKTRACK" }, { "from": 96, "to": 98, "label": "CASE" }, { "from": 97, "to": 494, "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": 97, "to": 511, "label": "EVAL-BACKTRACK" }, { "from": 98, "to": 119, "label": "PARALLEL" }, { "from": 98, "to": 120, "label": "PARALLEL" }, { "from": 119, "to": 163, "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": 119, "to": 175, "label": "EVAL-BACKTRACK" }, { "from": 120, "to": 348, "label": "PARALLEL" }, { "from": 120, "to": 350, "label": "PARALLEL" }, { "from": 163, "to": 94, "label": "INSTANCE with matching:\nT1 -> plus(plus(plus(T32, T33), T34), T35)\nT2 -> T37" }, { "from": 348, "to": 376, "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": 350, "to": 377, "label": "PARALLEL" }, { "from": 350, "to": 379, "label": "PARALLEL" }, { "from": 376, "to": 94, "label": "INSTANCE with matching:\nT1 -> plus(T72, plus(T70, T71))\nT2 -> T74" }, { "from": 377, "to": 381, "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": 377, "to": 382, "label": "EVAL-BACKTRACK" }, { "from": 379, "to": 386, "label": "PARALLEL" }, { "from": 379, "to": 387, "label": "PARALLEL" }, { "from": 381, "to": 383, "label": "SUCCESS" }, { "from": 386, "to": 390, "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": 387, "to": 417, "label": "PARALLEL" }, { "from": 387, "to": 418, "label": "PARALLEL" }, { "from": 390, "to": 396, "label": "SPLIT 1" }, { "from": 390, "to": 397, "label": "SPLIT 2\nnew knowledge:\nT113 is ground\nT114 is ground\nT121 is ground\nreplacements:X94 -> T121" }, { "from": 396, "to": 94, "label": "INSTANCE with matching:\nT1 -> plus(T113, T114)\nT2 -> X94" }, { "from": 397, "to": 410, "label": "SPLIT 1" }, { "from": 397, "to": 411, "label": "SPLIT 2\nnew knowledge:\nT115 is ground\nT128 is ground\nreplacements:X95 -> T128" }, { "from": 410, "to": 94, "label": "INSTANCE with matching:\nT1 -> T115\nT2 -> X95" }, { "from": 411, "to": 94, "label": "INSTANCE with matching:\nT1 -> plus(T121, T128)\nT2 -> T117" }, { "from": 417, "to": 419, "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": 418, "to": 438, "label": "FAILURE" }, { "from": 419, "to": 420, "label": "SPLIT 1" }, { "from": 419, "to": 421, "label": "SPLIT 2\nnew knowledge:\nT154 is ground\nT155 is ground" }, { "from": 420, "to": 422, "label": "CASE" }, { "from": 421, "to": 425, "label": "SPLIT 1" }, { "from": 421, "to": 426, "label": "SPLIT 2\nnew knowledge:\nT156 is ground" }, { "from": 422, "to": 423, "label": "BACKTRACK\nfor clause: isNat(s(X)) :- isNat(X)because of non-unification" }, { "from": 423, "to": 424, "label": "BACKTRACK\nfor clause: isNat(0)because of non-unification" }, { "from": 425, "to": 427, "label": "CASE" }, { "from": 426, "to": 435, "label": "CASE" }, { "from": 427, "to": 428, "label": "PARALLEL" }, { "from": 427, "to": 429, "label": "PARALLEL" }, { "from": 428, "to": 430, "label": "EVAL with clause\nisNat(s(X146)) :- isNat(X146).\nand substitutionX146 -> T165,\nT156 -> s(T165)" }, { "from": 428, "to": 431, "label": "EVAL-BACKTRACK" }, { "from": 429, "to": 432, "label": "EVAL with clause\nisNat(0).\nand substitutionT156 -> 0" }, { "from": 429, "to": 433, "label": "EVAL-BACKTRACK" }, { "from": 430, "to": 425, "label": "INSTANCE with matching:\nT156 -> T165" }, { "from": 432, "to": 434, "label": "SUCCESS" }, { "from": 435, "to": 436, "label": "BACKTRACK\nfor clause: add(s(X), Y, s(Z)) :- add(X, Y, Z)because of non-unification" }, { "from": 436, "to": 437, "label": "BACKTRACK\nfor clause: add(0, X, X)because of non-unification" }, { "from": 438, "to": 439, "label": "PARALLEL" }, { "from": 438, "to": 440, "label": "PARALLEL" }, { "from": 439, "to": 441, "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": 440, "to": 442, "label": "BACKTRACK\nfor clause: s2(plus(X, 0), X)because of non-unification" }, { "from": 441, "to": 94, "label": "INSTANCE with matching:\nT1 -> plus(plus(T196, T197), T195)\nT2 -> T199" }, { "from": 442, "to": 450, "label": "PARALLEL" }, { "from": 442, "to": 451, "label": "PARALLEL" }, { "from": 450, "to": 460, "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": 451, "to": 478, "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": 460, "to": 464, "label": "SPLIT 1" }, { "from": 460, "to": 465, "label": "SPLIT 2\nnew knowledge:\nT230 is ground\nT238 is ground\nreplacements:X212 -> T238" }, { "from": 464, "to": 94, "label": "INSTANCE with matching:\nT1 -> T230\nT2 -> X212" }, { "from": 465, "to": 397, "label": "INSTANCE with matching:\nT115 -> plus(T231, T232)\nX95 -> X213\nT121 -> T238\nT117 -> T234" }, { "from": 478, "to": 479, "label": "SPLIT 1" }, { "from": 478, "to": 480, "label": "SPLIT 2\nnew knowledge:\nT255 is ground" }, { "from": 479, "to": 425, "label": "INSTANCE with matching:\nT156 -> T255" }, { "from": 480, "to": 484, "label": "SPLIT 1" }, { "from": 480, "to": 485, "label": "SPLIT 2\nnew knowledge:\nT256 is ground\nT257 is ground" }, { "from": 484, "to": 420, "label": "INSTANCE with matching:\nT154 -> T256\nT155 -> T257" }, { "from": 485, "to": 486, "label": "CASE" }, { "from": 486, "to": 487, "label": "PARALLEL" }, { "from": 486, "to": 488, "label": "PARALLEL" }, { "from": 487, "to": 489, "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": 487, "to": 490, "label": "EVAL-BACKTRACK" }, { "from": 488, "to": 491, "label": "EVAL with clause\nadd(0, X266, X266).\nand substitutionT255 -> 0,\nT256 -> T295,\nT257 -> T296,\nX266 -> plus(T295, T296),\nT259 -> plus(T295, T296)" }, { "from": 488, "to": 492, "label": "EVAL-BACKTRACK" }, { "from": 489, "to": 485, "label": "INSTANCE with matching:\nT255 -> T282\nT256 -> T283\nT257 -> T284\nT259 -> T286" }, { "from": 491, "to": 493, "label": "SUCCESS" }, { "from": 494, "to": 516, "label": "CASE" }, { "from": 511, "to": 658, "label": "BACKTRACK\nfor clause: s2(plus(X, 0), X)\nwith clash: (s2(T1, T2), s2(plus(X270, X271), X272))" }, { "from": 516, "to": 517, "label": "PARALLEL" }, { "from": 516, "to": 518, "label": "PARALLEL" }, { "from": 517, "to": 519, "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": 517, "to": 520, "label": "EVAL-BACKTRACK" }, { "from": 518, "to": 541, "label": "PARALLEL" }, { "from": 518, "to": 542, "label": "PARALLEL" }, { "from": 519, "to": 94, "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": 94, "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": 549, "label": "PARALLEL" }, { "from": 545, "to": 550, "label": "PARALLEL" }, { "from": 546, "to": 548, "label": "SUCCESS" }, { "from": 549, "to": 551, "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": 550, "to": 554, "label": "PARALLEL" }, { "from": 550, "to": 555, "label": "PARALLEL" }, { "from": 551, "to": 552, "label": "SPLIT 1" }, { "from": 551, "to": 553, "label": "SPLIT 2\nnew knowledge:\nT410 is ground\nT425 is ground\nreplacements:X399 -> T425" }, { "from": 552, "to": 94, "label": "INSTANCE with matching:\nT1 -> T410\nT2 -> X399" }, { "from": 553, "to": 397, "label": "INSTANCE with matching:\nT115 -> T411\nX95 -> X400\nT121 -> T425\nT117 -> T413" }, { "from": 554, "to": 556, "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": 555, "to": 577, "label": "FAILURE" }, { "from": 556, "to": 557, "label": "SPLIT 1" }, { "from": 556, "to": 558, "label": "SPLIT 2\nnew knowledge:\nT456 is ground" }, { "from": 557, "to": 425, "label": "INSTANCE with matching:\nT156 -> T456" }, { "from": 558, "to": 559, "label": "SPLIT 1" }, { "from": 558, "to": 560, "label": "SPLIT 2\nnew knowledge:\nT457 is ground" }, { "from": 559, "to": 425, "label": "INSTANCE with matching:\nT156 -> T457" }, { "from": 560, "to": 561, "label": "CASE" }, { "from": 561, "to": 562, "label": "PARALLEL" }, { "from": 561, "to": 563, "label": "PARALLEL" }, { "from": 562, "to": 564, "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": 562, "to": 565, "label": "EVAL-BACKTRACK" }, { "from": 563, "to": 574, "label": "EVAL with clause\nadd(0, X513, X513).\nand substitutionT456 -> 0,\nT457 -> T510,\nX513 -> T510,\nT459 -> T510" }, { "from": 563, "to": 575, "label": "EVAL-BACKTRACK" }, { "from": 564, "to": 566, "label": "CASE" }, { "from": 566, "to": 567, "label": "PARALLEL" }, { "from": 566, "to": 568, "label": "PARALLEL" }, { "from": 567, "to": 569, "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": 567, "to": 570, "label": "EVAL-BACKTRACK" }, { "from": 568, "to": 571, "label": "EVAL with clause\nadd(0, X510, X510).\nand substitutionT479 -> 0,\nT480 -> T507,\nX510 -> T507,\nT482 -> T507" }, { "from": 568, "to": 572, "label": "EVAL-BACKTRACK" }, { "from": 569, "to": 564, "label": "INSTANCE with matching:\nT479 -> T498\nT480 -> T499\nT482 -> T501" }, { "from": 571, "to": 573, "label": "SUCCESS" }, { "from": 574, "to": 576, "label": "SUCCESS" }, { "from": 577, "to": 578, "label": "PARALLEL" }, { "from": 577, "to": 579, "label": "PARALLEL" }, { "from": 578, "to": 580, "label": "EVAL with clause\ns2(plus(X518, 0), X518).\nand substitutionT300 -> T515,\nX518 -> T515,\nT301 -> 0,\nT2 -> T515" }, { "from": 578, "to": 581, "label": "EVAL-BACKTRACK" }, { "from": 579, "to": 583, "label": "PARALLEL" }, { "from": 579, "to": 584, "label": "PARALLEL" }, { "from": 580, "to": 582, "label": "SUCCESS" }, { "from": 583, "to": 585, "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": 584, "to": 588, "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": 585, "to": 586, "label": "SPLIT 1" }, { "from": 585, "to": 587, "label": "SPLIT 2\nnew knowledge:\nT536 is ground\nT543 is ground\nreplacements:X548 -> T543" }, { "from": 586, "to": 94, "label": "INSTANCE with matching:\nT1 -> T536\nT2 -> X548" }, { "from": 587, "to": 397, "label": "INSTANCE with matching:\nT115 -> T537\nX95 -> X549\nT121 -> T543\nT117 -> T539" }, { "from": 588, "to": 589, "label": "SPLIT 1" }, { "from": 588, "to": 590, "label": "SPLIT 2\nnew knowledge:\nT566 is ground" }, { "from": 589, "to": 425, "label": "INSTANCE with matching:\nT156 -> T566" }, { "from": 590, "to": 623, "label": "SPLIT 1" }, { "from": 590, "to": 624, "label": "SPLIT 2\nnew knowledge:\nT567 is ground" }, { "from": 623, "to": 425, "label": "INSTANCE with matching:\nT156 -> T567" }, { "from": 624, "to": 564, "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.