18.55/5.64 YES 18.55/5.65 proof of /export/starexec/sandbox/benchmark/theBenchmark.pl 18.55/5.65 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 18.55/5.65 18.55/5.65 18.55/5.65 Left Termination of the query pattern 18.55/5.65 18.55/5.65 ways(g,g,a) 18.55/5.65 18.55/5.65 w.r.t. the given Prolog program could successfully be proven: 18.55/5.65 18.55/5.65 (0) Prolog 18.55/5.65 (1) UnifyTransformerProof [EQUIVALENT, 0 ms] 18.55/5.65 (2) Prolog 18.55/5.65 (3) PrologToPiTRSProof [SOUND, 34 ms] 18.55/5.65 (4) PiTRS 18.55/5.65 (5) DependencyPairsProof [EQUIVALENT, 32 ms] 18.55/5.65 (6) PiDP 18.55/5.65 (7) DependencyGraphProof [EQUIVALENT, 0 ms] 18.55/5.65 (8) AND 18.55/5.65 (9) PiDP 18.55/5.65 (10) UsableRulesProof [EQUIVALENT, 0 ms] 18.55/5.65 (11) PiDP 18.55/5.65 (12) PiDPToQDPProof [EQUIVALENT, 0 ms] 18.55/5.65 (13) QDP 18.55/5.65 (14) QDPSizeChangeProof [EQUIVALENT, 0 ms] 18.55/5.65 (15) YES 18.55/5.65 (16) PiDP 18.55/5.65 (17) UsableRulesProof [EQUIVALENT, 0 ms] 18.55/5.65 (18) PiDP 18.55/5.65 (19) PiDPToQDPProof [SOUND, 0 ms] 18.55/5.65 (20) QDP 18.55/5.65 (21) QDPSizeChangeProof [EQUIVALENT, 0 ms] 18.55/5.65 (22) YES 18.55/5.65 (23) PiDP 18.55/5.65 (24) UsableRulesProof [EQUIVALENT, 0 ms] 18.55/5.65 (25) PiDP 18.55/5.65 (26) PiDPToQDPProof [SOUND, 0 ms] 18.55/5.65 (27) QDP 18.55/5.65 (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] 18.55/5.65 (29) YES 18.55/5.65 (30) PiDP 18.55/5.65 (31) PiDPToQDPProof [SOUND, 0 ms] 18.55/5.65 (32) QDP 18.55/5.65 (33) TransformationProof [EQUIVALENT, 0 ms] 18.55/5.65 (34) QDP 18.55/5.65 (35) TransformationProof [EQUIVALENT, 0 ms] 18.55/5.65 (36) QDP 18.55/5.65 (37) TransformationProof [EQUIVALENT, 0 ms] 18.55/5.65 (38) QDP 18.55/5.65 (39) TransformationProof [EQUIVALENT, 0 ms] 18.55/5.65 (40) QDP 18.55/5.65 (41) TransformationProof [EQUIVALENT, 0 ms] 18.55/5.65 (42) QDP 18.55/5.65 (43) TransformationProof [EQUIVALENT, 0 ms] 18.55/5.65 (44) QDP 18.55/5.65 (45) QDPOrderProof [EQUIVALENT, 169 ms] 18.55/5.65 (46) QDP 18.55/5.65 (47) DependencyGraphProof [EQUIVALENT, 0 ms] 18.55/5.65 (48) QDP 18.55/5.65 (49) QDPOrderProof [EQUIVALENT, 49 ms] 18.55/5.65 (50) QDP 18.55/5.65 (51) DependencyGraphProof [EQUIVALENT, 0 ms] 18.55/5.65 (52) TRUE 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (0) 18.55/5.65 Obligation: 18.55/5.65 Clauses: 18.55/5.65 18.55/5.65 nat(0). 18.55/5.65 nat(s(X)) :- nat(X). 18.55/5.65 plus(0, X, X) :- nat(X). 18.55/5.65 plus(s(X), Y, s(Z)) :- plus(X, Y, Z). 18.55/5.65 ways(0, X1, s(0)). 18.55/5.65 ways(X2, [], 0). 18.55/5.65 ways(Amount, .(s(C), Coins), N) :- ','(=(Amount, s(X3)), ','(plus(s(C), NewAmount, Amount), ','(ways(Amount, Coins, N1), ','(ways(NewAmount, .(s(C), Coins), N2), plus(N1, N2, N))))). 18.55/5.65 ways(Amount, .(s(C), Coins), N) :- ','(=(Amount, s(X4)), ','(plus(Amount, s(X5), s(C)), ways(Amount, Coins, N))). 18.55/5.65 18.55/5.65 18.55/5.65 Query: ways(g,g,a) 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (1) UnifyTransformerProof (EQUIVALENT) 18.55/5.65 Added a fact for the built-in = predicate [PROLOG]. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (2) 18.55/5.65 Obligation: 18.55/5.65 Clauses: 18.55/5.65 18.55/5.65 nat(0). 18.55/5.65 nat(s(X)) :- nat(X). 18.55/5.65 plus(0, X, X) :- nat(X). 18.55/5.65 plus(s(X), Y, s(Z)) :- plus(X, Y, Z). 18.55/5.65 ways(0, X1, s(0)). 18.55/5.65 ways(X2, [], 0). 18.55/5.65 ways(Amount, .(s(C), Coins), N) :- ','(=(Amount, s(X3)), ','(plus(s(C), NewAmount, Amount), ','(ways(Amount, Coins, N1), ','(ways(NewAmount, .(s(C), Coins), N2), plus(N1, N2, N))))). 18.55/5.65 ways(Amount, .(s(C), Coins), N) :- ','(=(Amount, s(X4)), ','(plus(Amount, s(X5), s(C)), ways(Amount, Coins, N))). 18.55/5.65 =(X, X). 18.55/5.65 18.55/5.65 18.55/5.65 Query: ways(g,g,a) 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (3) PrologToPiTRSProof (SOUND) 18.55/5.65 We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: 18.55/5.65 18.55/5.65 ways_in_3: (b,b,f) 18.55/5.65 18.55/5.65 plus_in_3: (b,f,b) (b,b,f) 18.55/5.65 18.55/5.65 nat_in_1: (b) 18.55/5.65 18.55/5.65 Transforming Prolog into the following Term Rewriting System: 18.55/5.65 18.55/5.65 Pi-finite rewrite system: 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 18.55/5.65 18.55/5.65 18.55/5.65 18.55/5.65 Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog 18.55/5.65 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (4) 18.55/5.65 Obligation: 18.55/5.65 Pi-finite rewrite system: 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (5) DependencyPairsProof (EQUIVALENT) 18.55/5.65 Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> U4_GGA(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> =_IN_GA(Amount, s(X3)) 18.55/5.65 U4_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_GGA(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 U4_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> PLUS_IN_GAG(s(C), NewAmount, Amount) 18.55/5.65 PLUS_IN_GAG(0, X, X) -> U2_GAG(X, nat_in_g(X)) 18.55/5.65 PLUS_IN_GAG(0, X, X) -> NAT_IN_G(X) 18.55/5.65 NAT_IN_G(s(X)) -> U1_G(X, nat_in_g(X)) 18.55/5.65 NAT_IN_G(s(X)) -> NAT_IN_G(X) 18.55/5.65 PLUS_IN_GAG(s(X), Y, s(Z)) -> U3_GAG(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 PLUS_IN_GAG(s(X), Y, s(Z)) -> PLUS_IN_GAG(X, Y, Z) 18.55/5.65 U5_GGA(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 U5_GGA(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> WAYS_IN_GGA(Amount, Coins, N1) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> U9_GGA(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_GGA(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U9_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> PLUS_IN_GAG(Amount, s(X5), s(C)) 18.55/5.65 U10_GGA(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_GGA(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U10_GGA(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> WAYS_IN_GGA(Amount, Coins, N) 18.55/5.65 U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_GGA(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins), N2) 18.55/5.65 U7_GGA(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_GGA(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 U7_GGA(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> PLUS_IN_GGA(N1, N2, N) 18.55/5.65 PLUS_IN_GGA(0, X, X) -> U2_GGA(X, nat_in_g(X)) 18.55/5.65 PLUS_IN_GGA(0, X, X) -> NAT_IN_G(X) 18.55/5.65 PLUS_IN_GGA(s(X), Y, s(Z)) -> U3_GGA(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 PLUS_IN_GGA(s(X), Y, s(Z)) -> PLUS_IN_GGA(X, Y, Z) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 WAYS_IN_GGA(x1, x2, x3) = WAYS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 U4_GGA(x1, x2, x3, x4, x5) = U4_GGA(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_IN_GA(x1, x2) = =_IN_GA(x1) 18.55/5.65 18.55/5.65 U5_GGA(x1, x2, x3, x4, x5, x6) = U5_GGA(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 PLUS_IN_GAG(x1, x2, x3) = PLUS_IN_GAG(x1, x3) 18.55/5.65 18.55/5.65 U2_GAG(x1, x2) = U2_GAG(x1, x2) 18.55/5.65 18.55/5.65 NAT_IN_G(x1) = NAT_IN_G(x1) 18.55/5.65 18.55/5.65 U1_G(x1, x2) = U1_G(x2) 18.55/5.65 18.55/5.65 U3_GAG(x1, x2, x3, x4) = U3_GAG(x4) 18.55/5.65 18.55/5.65 U6_GGA(x1, x2, x3, x4, x5, x6, x7) = U6_GGA(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_GGA(x1, x2, x3, x4, x5) = U9_GGA(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_GGA(x1, x2, x3, x4, x5, x6) = U10_GGA(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_GGA(x1, x2, x3, x4, x5) = U11_GGA(x5) 18.55/5.65 18.55/5.65 U7_GGA(x1, x2, x3, x4, x5, x6, x7, x8) = U7_GGA(x7, x8) 18.55/5.65 18.55/5.65 U8_GGA(x1, x2, x3, x4, x5) = U8_GGA(x5) 18.55/5.65 18.55/5.65 PLUS_IN_GGA(x1, x2, x3) = PLUS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 U2_GGA(x1, x2) = U2_GGA(x1, x2) 18.55/5.65 18.55/5.65 U3_GGA(x1, x2, x3, x4) = U3_GGA(x4) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (6) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> U4_GGA(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> =_IN_GA(Amount, s(X3)) 18.55/5.65 U4_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_GGA(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 U4_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> PLUS_IN_GAG(s(C), NewAmount, Amount) 18.55/5.65 PLUS_IN_GAG(0, X, X) -> U2_GAG(X, nat_in_g(X)) 18.55/5.65 PLUS_IN_GAG(0, X, X) -> NAT_IN_G(X) 18.55/5.65 NAT_IN_G(s(X)) -> U1_G(X, nat_in_g(X)) 18.55/5.65 NAT_IN_G(s(X)) -> NAT_IN_G(X) 18.55/5.65 PLUS_IN_GAG(s(X), Y, s(Z)) -> U3_GAG(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 PLUS_IN_GAG(s(X), Y, s(Z)) -> PLUS_IN_GAG(X, Y, Z) 18.55/5.65 U5_GGA(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 U5_GGA(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> WAYS_IN_GGA(Amount, Coins, N1) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> U9_GGA(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_GGA(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U9_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> PLUS_IN_GAG(Amount, s(X5), s(C)) 18.55/5.65 U10_GGA(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_GGA(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U10_GGA(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> WAYS_IN_GGA(Amount, Coins, N) 18.55/5.65 U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_GGA(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins), N2) 18.55/5.65 U7_GGA(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_GGA(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 U7_GGA(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> PLUS_IN_GGA(N1, N2, N) 18.55/5.65 PLUS_IN_GGA(0, X, X) -> U2_GGA(X, nat_in_g(X)) 18.55/5.65 PLUS_IN_GGA(0, X, X) -> NAT_IN_G(X) 18.55/5.65 PLUS_IN_GGA(s(X), Y, s(Z)) -> U3_GGA(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 PLUS_IN_GGA(s(X), Y, s(Z)) -> PLUS_IN_GGA(X, Y, Z) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 WAYS_IN_GGA(x1, x2, x3) = WAYS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 U4_GGA(x1, x2, x3, x4, x5) = U4_GGA(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_IN_GA(x1, x2) = =_IN_GA(x1) 18.55/5.65 18.55/5.65 U5_GGA(x1, x2, x3, x4, x5, x6) = U5_GGA(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 PLUS_IN_GAG(x1, x2, x3) = PLUS_IN_GAG(x1, x3) 18.55/5.65 18.55/5.65 U2_GAG(x1, x2) = U2_GAG(x1, x2) 18.55/5.65 18.55/5.65 NAT_IN_G(x1) = NAT_IN_G(x1) 18.55/5.65 18.55/5.65 U1_G(x1, x2) = U1_G(x2) 18.55/5.65 18.55/5.65 U3_GAG(x1, x2, x3, x4) = U3_GAG(x4) 18.55/5.65 18.55/5.65 U6_GGA(x1, x2, x3, x4, x5, x6, x7) = U6_GGA(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_GGA(x1, x2, x3, x4, x5) = U9_GGA(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_GGA(x1, x2, x3, x4, x5, x6) = U10_GGA(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_GGA(x1, x2, x3, x4, x5) = U11_GGA(x5) 18.55/5.65 18.55/5.65 U7_GGA(x1, x2, x3, x4, x5, x6, x7, x8) = U7_GGA(x7, x8) 18.55/5.65 18.55/5.65 U8_GGA(x1, x2, x3, x4, x5) = U8_GGA(x5) 18.55/5.65 18.55/5.65 PLUS_IN_GGA(x1, x2, x3) = PLUS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 U2_GGA(x1, x2) = U2_GGA(x1, x2) 18.55/5.65 18.55/5.65 U3_GGA(x1, x2, x3, x4) = U3_GGA(x4) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (7) DependencyGraphProof (EQUIVALENT) 18.55/5.65 The approximation of the Dependency Graph [LOPSTR] contains 4 SCCs with 14 less nodes. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (8) 18.55/5.65 Complex Obligation (AND) 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (9) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 NAT_IN_G(s(X)) -> NAT_IN_G(X) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 NAT_IN_G(x1) = NAT_IN_G(x1) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (10) UsableRulesProof (EQUIVALENT) 18.55/5.65 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (11) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 NAT_IN_G(s(X)) -> NAT_IN_G(X) 18.55/5.65 18.55/5.65 R is empty. 18.55/5.65 Pi is empty. 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (12) PiDPToQDPProof (EQUIVALENT) 18.55/5.65 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (13) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 NAT_IN_G(s(X)) -> NAT_IN_G(X) 18.55/5.65 18.55/5.65 R is empty. 18.55/5.65 Q is empty. 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (14) QDPSizeChangeProof (EQUIVALENT) 18.55/5.65 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. 18.55/5.65 18.55/5.65 From the DPs we obtained the following set of size-change graphs: 18.55/5.65 *NAT_IN_G(s(X)) -> NAT_IN_G(X) 18.55/5.65 The graph contains the following edges 1 > 1 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (15) 18.55/5.65 YES 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (16) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 PLUS_IN_GGA(s(X), Y, s(Z)) -> PLUS_IN_GGA(X, Y, Z) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 PLUS_IN_GGA(x1, x2, x3) = PLUS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (17) UsableRulesProof (EQUIVALENT) 18.55/5.65 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (18) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 PLUS_IN_GGA(s(X), Y, s(Z)) -> PLUS_IN_GGA(X, Y, Z) 18.55/5.65 18.55/5.65 R is empty. 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 PLUS_IN_GGA(x1, x2, x3) = PLUS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (19) PiDPToQDPProof (SOUND) 18.55/5.65 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (20) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 PLUS_IN_GGA(s(X), Y) -> PLUS_IN_GGA(X, Y) 18.55/5.65 18.55/5.65 R is empty. 18.55/5.65 Q is empty. 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (21) QDPSizeChangeProof (EQUIVALENT) 18.55/5.65 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. 18.55/5.65 18.55/5.65 From the DPs we obtained the following set of size-change graphs: 18.55/5.65 *PLUS_IN_GGA(s(X), Y) -> PLUS_IN_GGA(X, Y) 18.55/5.65 The graph contains the following edges 1 > 1, 2 >= 2 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (22) 18.55/5.65 YES 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (23) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 PLUS_IN_GAG(s(X), Y, s(Z)) -> PLUS_IN_GAG(X, Y, Z) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 PLUS_IN_GAG(x1, x2, x3) = PLUS_IN_GAG(x1, x3) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (24) UsableRulesProof (EQUIVALENT) 18.55/5.65 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (25) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 PLUS_IN_GAG(s(X), Y, s(Z)) -> PLUS_IN_GAG(X, Y, Z) 18.55/5.65 18.55/5.65 R is empty. 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 PLUS_IN_GAG(x1, x2, x3) = PLUS_IN_GAG(x1, x3) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (26) PiDPToQDPProof (SOUND) 18.55/5.65 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (27) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 PLUS_IN_GAG(s(X), s(Z)) -> PLUS_IN_GAG(X, Z) 18.55/5.65 18.55/5.65 R is empty. 18.55/5.65 Q is empty. 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (28) QDPSizeChangeProof (EQUIVALENT) 18.55/5.65 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. 18.55/5.65 18.55/5.65 From the DPs we obtained the following set of size-change graphs: 18.55/5.65 *PLUS_IN_GAG(s(X), s(Z)) -> PLUS_IN_GAG(X, Z) 18.55/5.65 The graph contains the following edges 1 > 1, 2 > 2 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (29) 18.55/5.65 YES 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (30) 18.55/5.65 Obligation: 18.55/5.65 Pi DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U4_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_GGA(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 U5_GGA(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 U6_GGA(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins), N2) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> U4_GGA(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins), N) -> U9_GGA(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_GGA(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_GGA(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_GGA(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> WAYS_IN_GGA(Amount, Coins, N) 18.55/5.65 U5_GGA(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> WAYS_IN_GGA(Amount, Coins, N1) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1, s(0)) -> ways_out_gga(0, X1, s(0)) 18.55/5.65 ways_in_gga(X2, [], 0) -> ways_out_gga(X2, [], 0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U4_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X3))) 18.55/5.65 =_in_ga(X, X) -> =_out_ga(X, X) 18.55/5.65 U4_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X3))) -> U5_gga(Amount, C, Coins, N, X3, plus_in_gag(s(C), NewAmount, Amount)) 18.55/5.65 plus_in_gag(0, X, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g(0) 18.55/5.65 nat_in_g(s(X)) -> U1_g(X, nat_in_g(X)) 18.55/5.65 U1_g(X, nat_out_g(X)) -> nat_out_g(s(X)) 18.55/5.65 U2_gag(X, nat_out_g(X)) -> plus_out_gag(0, X, X) 18.55/5.65 plus_in_gag(s(X), Y, s(Z)) -> U3_gag(X, Y, Z, plus_in_gag(X, Y, Z)) 18.55/5.65 U3_gag(X, Y, Z, plus_out_gag(X, Y, Z)) -> plus_out_gag(s(X), Y, s(Z)) 18.55/5.65 U5_gga(Amount, C, Coins, N, X3, plus_out_gag(s(C), NewAmount, Amount)) -> U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_in_gga(Amount, Coins, N1)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins), N) -> U9_gga(Amount, C, Coins, N, =_in_ga(Amount, s(X4))) 18.55/5.65 U9_gga(Amount, C, Coins, N, =_out_ga(Amount, s(X4))) -> U10_gga(Amount, C, Coins, N, X4, plus_in_gag(Amount, s(X5), s(C))) 18.55/5.65 U10_gga(Amount, C, Coins, N, X4, plus_out_gag(Amount, s(X5), s(C))) -> U11_gga(Amount, C, Coins, N, ways_in_gga(Amount, Coins, N)) 18.55/5.65 U11_gga(Amount, C, Coins, N, ways_out_gga(Amount, Coins, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 U6_gga(Amount, C, Coins, N, X3, NewAmount, ways_out_gga(Amount, Coins, N1)) -> U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_in_gga(NewAmount, .(s(C), Coins), N2)) 18.55/5.65 U7_gga(Amount, C, Coins, N, X3, NewAmount, N1, ways_out_gga(NewAmount, .(s(C), Coins), N2)) -> U8_gga(Amount, C, Coins, N, plus_in_gga(N1, N2, N)) 18.55/5.65 plus_in_gga(0, X, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g(X)) -> plus_out_gga(0, X, X) 18.55/5.65 plus_in_gga(s(X), Y, s(Z)) -> U3_gga(X, Y, Z, plus_in_gga(X, Y, Z)) 18.55/5.65 U3_gga(X, Y, Z, plus_out_gga(X, Y, Z)) -> plus_out_gga(s(X), Y, s(Z)) 18.55/5.65 U8_gga(Amount, C, Coins, N, plus_out_gga(N1, N2, N)) -> ways_out_gga(Amount, .(s(C), Coins), N) 18.55/5.65 18.55/5.65 The argument filtering Pi contains the following mapping: 18.55/5.65 ways_in_gga(x1, x2, x3) = ways_in_gga(x1, x2) 18.55/5.65 18.55/5.65 0 = 0 18.55/5.65 18.55/5.65 ways_out_gga(x1, x2, x3) = ways_out_gga(x3) 18.55/5.65 18.55/5.65 [] = [] 18.55/5.65 18.55/5.65 .(x1, x2) = .(x1, x2) 18.55/5.65 18.55/5.65 s(x1) = s(x1) 18.55/5.65 18.55/5.65 U4_gga(x1, x2, x3, x4, x5) = U4_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 =_in_ga(x1, x2) = =_in_ga(x1) 18.55/5.65 18.55/5.65 =_out_ga(x1, x2) = =_out_ga(x2) 18.55/5.65 18.55/5.65 U5_gga(x1, x2, x3, x4, x5, x6) = U5_gga(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 plus_in_gag(x1, x2, x3) = plus_in_gag(x1, x3) 18.55/5.65 18.55/5.65 U2_gag(x1, x2) = U2_gag(x1, x2) 18.55/5.65 18.55/5.65 nat_in_g(x1) = nat_in_g(x1) 18.55/5.65 18.55/5.65 nat_out_g(x1) = nat_out_g 18.55/5.65 18.55/5.65 U1_g(x1, x2) = U1_g(x2) 18.55/5.65 18.55/5.65 plus_out_gag(x1, x2, x3) = plus_out_gag(x2) 18.55/5.65 18.55/5.65 U3_gag(x1, x2, x3, x4) = U3_gag(x4) 18.55/5.65 18.55/5.65 U6_gga(x1, x2, x3, x4, x5, x6, x7) = U6_gga(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_gga(x1, x2, x3, x4, x5) = U9_gga(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_gga(x1, x2, x3, x4, x5, x6) = U10_gga(x1, x3, x6) 18.55/5.65 18.55/5.65 U11_gga(x1, x2, x3, x4, x5) = U11_gga(x5) 18.55/5.65 18.55/5.65 U7_gga(x1, x2, x3, x4, x5, x6, x7, x8) = U7_gga(x7, x8) 18.55/5.65 18.55/5.65 U8_gga(x1, x2, x3, x4, x5) = U8_gga(x5) 18.55/5.65 18.55/5.65 plus_in_gga(x1, x2, x3) = plus_in_gga(x1, x2) 18.55/5.65 18.55/5.65 U2_gga(x1, x2) = U2_gga(x1, x2) 18.55/5.65 18.55/5.65 plus_out_gga(x1, x2, x3) = plus_out_gga(x3) 18.55/5.65 18.55/5.65 U3_gga(x1, x2, x3, x4) = U3_gga(x4) 18.55/5.65 18.55/5.65 WAYS_IN_GGA(x1, x2, x3) = WAYS_IN_GGA(x1, x2) 18.55/5.65 18.55/5.65 U4_GGA(x1, x2, x3, x4, x5) = U4_GGA(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U5_GGA(x1, x2, x3, x4, x5, x6) = U5_GGA(x1, x2, x3, x6) 18.55/5.65 18.55/5.65 U6_GGA(x1, x2, x3, x4, x5, x6, x7) = U6_GGA(x2, x3, x6, x7) 18.55/5.65 18.55/5.65 U9_GGA(x1, x2, x3, x4, x5) = U9_GGA(x1, x2, x3, x5) 18.55/5.65 18.55/5.65 U10_GGA(x1, x2, x3, x4, x5, x6) = U10_GGA(x1, x3, x6) 18.55/5.65 18.55/5.65 18.55/5.65 We have to consider all (P,R,Pi)-chains 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (31) PiDPToQDPProof (SOUND) 18.55/5.65 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (32) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U4_GGA(Amount, C, Coins, =_out_ga(s(X3))) -> U5_GGA(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_GGA(Amount, C, Coins, =_out_ga(s(X4))) -> U10_GGA(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.65 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 =_in_ga(X) -> =_out_ga(X) 18.55/5.65 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g 18.55/5.65 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.65 U1_g(nat_out_g) -> nat_out_g 18.55/5.65 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.65 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.65 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.65 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.65 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.65 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.65 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.65 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.65 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.65 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 18.55/5.65 The set Q consists of the following terms: 18.55/5.65 18.55/5.65 ways_in_gga(x0, x1) 18.55/5.65 =_in_ga(x0) 18.55/5.65 U4_gga(x0, x1, x2, x3) 18.55/5.65 plus_in_gag(x0, x1) 18.55/5.65 nat_in_g(x0) 18.55/5.65 U1_g(x0) 18.55/5.65 U2_gag(x0, x1) 18.55/5.65 U3_gag(x0) 18.55/5.65 U5_gga(x0, x1, x2, x3) 18.55/5.65 U9_gga(x0, x1, x2, x3) 18.55/5.65 U10_gga(x0, x1, x2) 18.55/5.65 U11_gga(x0) 18.55/5.65 U6_gga(x0, x1, x2, x3) 18.55/5.65 U7_gga(x0, x1) 18.55/5.65 plus_in_gga(x0, x1) 18.55/5.65 U2_gga(x0, x1) 18.55/5.65 U3_gga(x0) 18.55/5.65 U8_gga(x0) 18.55/5.65 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (33) TransformationProof (EQUIVALENT) 18.55/5.65 By rewriting [LPAR04] the rule WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_in_ga(Amount)) at position [3] we obtained the following new rules [LPAR04]: 18.55/5.65 18.55/5.65 (WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)),WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount))) 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (34) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U4_GGA(Amount, C, Coins, =_out_ga(s(X3))) -> U5_GGA(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_GGA(Amount, C, Coins, =_out_ga(s(X4))) -> U10_GGA(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.65 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 =_in_ga(X) -> =_out_ga(X) 18.55/5.65 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g 18.55/5.65 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.65 U1_g(nat_out_g) -> nat_out_g 18.55/5.65 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.65 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.65 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.65 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.65 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.65 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.65 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.65 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.65 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.65 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 18.55/5.65 The set Q consists of the following terms: 18.55/5.65 18.55/5.65 ways_in_gga(x0, x1) 18.55/5.65 =_in_ga(x0) 18.55/5.65 U4_gga(x0, x1, x2, x3) 18.55/5.65 plus_in_gag(x0, x1) 18.55/5.65 nat_in_g(x0) 18.55/5.65 U1_g(x0) 18.55/5.65 U2_gag(x0, x1) 18.55/5.65 U3_gag(x0) 18.55/5.65 U5_gga(x0, x1, x2, x3) 18.55/5.65 U9_gga(x0, x1, x2, x3) 18.55/5.65 U10_gga(x0, x1, x2) 18.55/5.65 U11_gga(x0) 18.55/5.65 U6_gga(x0, x1, x2, x3) 18.55/5.65 U7_gga(x0, x1) 18.55/5.65 plus_in_gga(x0, x1) 18.55/5.65 U2_gga(x0, x1) 18.55/5.65 U3_gga(x0) 18.55/5.65 U8_gga(x0) 18.55/5.65 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (35) TransformationProof (EQUIVALENT) 18.55/5.65 By rewriting [LPAR04] the rule WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_in_ga(Amount)) at position [3] we obtained the following new rules [LPAR04]: 18.55/5.65 18.55/5.65 (WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)),WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount))) 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (36) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U4_GGA(Amount, C, Coins, =_out_ga(s(X3))) -> U5_GGA(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.65 U9_GGA(Amount, C, Coins, =_out_ga(s(X4))) -> U10_GGA(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.65 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 =_in_ga(X) -> =_out_ga(X) 18.55/5.65 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g 18.55/5.65 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.65 U1_g(nat_out_g) -> nat_out_g 18.55/5.65 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.65 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.65 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.65 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.65 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.65 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.65 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.65 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.65 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.65 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 18.55/5.65 The set Q consists of the following terms: 18.55/5.65 18.55/5.65 ways_in_gga(x0, x1) 18.55/5.65 =_in_ga(x0) 18.55/5.65 U4_gga(x0, x1, x2, x3) 18.55/5.65 plus_in_gag(x0, x1) 18.55/5.65 nat_in_g(x0) 18.55/5.65 U1_g(x0) 18.55/5.65 U2_gag(x0, x1) 18.55/5.65 U3_gag(x0) 18.55/5.65 U5_gga(x0, x1, x2, x3) 18.55/5.65 U9_gga(x0, x1, x2, x3) 18.55/5.65 U10_gga(x0, x1, x2) 18.55/5.65 U11_gga(x0) 18.55/5.65 U6_gga(x0, x1, x2, x3) 18.55/5.65 U7_gga(x0, x1) 18.55/5.65 plus_in_gga(x0, x1) 18.55/5.65 U2_gga(x0, x1) 18.55/5.65 U3_gga(x0) 18.55/5.65 U8_gga(x0) 18.55/5.65 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (37) TransformationProof (EQUIVALENT) 18.55/5.65 By instantiating [LPAR04] the rule U4_GGA(Amount, C, Coins, =_out_ga(s(X3))) -> U5_GGA(Amount, C, Coins, plus_in_gag(s(C), Amount)) we obtained the following new rules [LPAR04]: 18.55/5.65 18.55/5.65 (U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, plus_in_gag(s(z1), s(x3))),U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, plus_in_gag(s(z1), s(x3)))) 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (38) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.65 U9_GGA(Amount, C, Coins, =_out_ga(s(X4))) -> U10_GGA(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, plus_in_gag(s(z1), s(x3))) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.65 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 =_in_ga(X) -> =_out_ga(X) 18.55/5.65 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g 18.55/5.65 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.65 U1_g(nat_out_g) -> nat_out_g 18.55/5.65 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.65 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.65 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.65 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.65 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.65 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.65 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.65 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.65 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.65 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 18.55/5.65 The set Q consists of the following terms: 18.55/5.65 18.55/5.65 ways_in_gga(x0, x1) 18.55/5.65 =_in_ga(x0) 18.55/5.65 U4_gga(x0, x1, x2, x3) 18.55/5.65 plus_in_gag(x0, x1) 18.55/5.65 nat_in_g(x0) 18.55/5.65 U1_g(x0) 18.55/5.65 U2_gag(x0, x1) 18.55/5.65 U3_gag(x0) 18.55/5.65 U5_gga(x0, x1, x2, x3) 18.55/5.65 U9_gga(x0, x1, x2, x3) 18.55/5.65 U10_gga(x0, x1, x2) 18.55/5.65 U11_gga(x0) 18.55/5.65 U6_gga(x0, x1, x2, x3) 18.55/5.65 U7_gga(x0, x1) 18.55/5.65 plus_in_gga(x0, x1) 18.55/5.65 U2_gga(x0, x1) 18.55/5.65 U3_gga(x0) 18.55/5.65 U8_gga(x0) 18.55/5.65 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (39) TransformationProof (EQUIVALENT) 18.55/5.65 By rewriting [LPAR04] the rule U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, plus_in_gag(s(z1), s(x3))) at position [3] we obtained the following new rules [LPAR04]: 18.55/5.65 18.55/5.65 (U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))),U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3)))) 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (40) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.65 U9_GGA(Amount, C, Coins, =_out_ga(s(X4))) -> U10_GGA(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.65 18.55/5.65 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.65 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 =_in_ga(X) -> =_out_ga(X) 18.55/5.65 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.65 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.65 nat_in_g(0) -> nat_out_g 18.55/5.65 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.65 U1_g(nat_out_g) -> nat_out_g 18.55/5.65 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.65 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.65 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.65 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.65 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.65 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.65 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.65 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.65 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.65 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.65 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.65 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.65 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.65 18.55/5.65 The set Q consists of the following terms: 18.55/5.65 18.55/5.65 ways_in_gga(x0, x1) 18.55/5.65 =_in_ga(x0) 18.55/5.65 U4_gga(x0, x1, x2, x3) 18.55/5.65 plus_in_gag(x0, x1) 18.55/5.65 nat_in_g(x0) 18.55/5.65 U1_g(x0) 18.55/5.65 U2_gag(x0, x1) 18.55/5.65 U3_gag(x0) 18.55/5.65 U5_gga(x0, x1, x2, x3) 18.55/5.65 U9_gga(x0, x1, x2, x3) 18.55/5.65 U10_gga(x0, x1, x2) 18.55/5.65 U11_gga(x0) 18.55/5.65 U6_gga(x0, x1, x2, x3) 18.55/5.65 U7_gga(x0, x1) 18.55/5.65 plus_in_gga(x0, x1) 18.55/5.65 U2_gga(x0, x1) 18.55/5.65 U3_gga(x0) 18.55/5.65 U8_gga(x0) 18.55/5.65 18.55/5.65 We have to consider all (P,Q,R)-chains. 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (41) TransformationProof (EQUIVALENT) 18.55/5.65 By instantiating [LPAR04] the rule U9_GGA(Amount, C, Coins, =_out_ga(s(X4))) -> U10_GGA(Amount, Coins, plus_in_gag(Amount, s(C))) we obtained the following new rules [LPAR04]: 18.55/5.65 18.55/5.65 (U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, plus_in_gag(s(x3), s(z1))),U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, plus_in_gag(s(x3), s(z1)))) 18.55/5.65 18.55/5.65 18.55/5.65 ---------------------------------------- 18.55/5.65 18.55/5.65 (42) 18.55/5.65 Obligation: 18.55/5.65 Q DP problem: 18.55/5.65 The TRS P consists of the following rules: 18.55/5.65 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.65 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.65 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.65 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))) 18.55/5.65 U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, plus_in_gag(s(x3), s(z1))) 18.55/5.65 18.55/5.65 The TRS R consists of the following rules: 18.55/5.66 18.55/5.66 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.66 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 =_in_ga(X) -> =_out_ga(X) 18.55/5.66 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.66 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.66 nat_in_g(0) -> nat_out_g 18.55/5.66 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.66 U1_g(nat_out_g) -> nat_out_g 18.55/5.66 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.66 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.66 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.66 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.66 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.66 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.66 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.66 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.66 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.66 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.66 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.66 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 18.55/5.66 The set Q consists of the following terms: 18.55/5.66 18.55/5.66 ways_in_gga(x0, x1) 18.55/5.66 =_in_ga(x0) 18.55/5.66 U4_gga(x0, x1, x2, x3) 18.55/5.66 plus_in_gag(x0, x1) 18.55/5.66 nat_in_g(x0) 18.55/5.66 U1_g(x0) 18.55/5.66 U2_gag(x0, x1) 18.55/5.66 U3_gag(x0) 18.55/5.66 U5_gga(x0, x1, x2, x3) 18.55/5.66 U9_gga(x0, x1, x2, x3) 18.55/5.66 U10_gga(x0, x1, x2) 18.55/5.66 U11_gga(x0) 18.55/5.66 U6_gga(x0, x1, x2, x3) 18.55/5.66 U7_gga(x0, x1) 18.55/5.66 plus_in_gga(x0, x1) 18.55/5.66 U2_gga(x0, x1) 18.55/5.66 U3_gga(x0) 18.55/5.66 U8_gga(x0) 18.55/5.66 18.55/5.66 We have to consider all (P,Q,R)-chains. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (43) TransformationProof (EQUIVALENT) 18.55/5.66 By rewriting [LPAR04] the rule U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, plus_in_gag(s(x3), s(z1))) at position [2] we obtained the following new rules [LPAR04]: 18.55/5.66 18.55/5.66 (U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, U3_gag(plus_in_gag(x3, z1))),U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, U3_gag(plus_in_gag(x3, z1)))) 18.55/5.66 18.55/5.66 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (44) 18.55/5.66 Obligation: 18.55/5.66 Q DP problem: 18.55/5.66 The TRS P consists of the following rules: 18.55/5.66 18.55/5.66 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.66 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.66 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.66 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.66 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.66 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))) 18.55/5.66 U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, U3_gag(plus_in_gag(x3, z1))) 18.55/5.66 18.55/5.66 The TRS R consists of the following rules: 18.55/5.66 18.55/5.66 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.66 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 =_in_ga(X) -> =_out_ga(X) 18.55/5.66 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.66 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.66 nat_in_g(0) -> nat_out_g 18.55/5.66 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.66 U1_g(nat_out_g) -> nat_out_g 18.55/5.66 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.66 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.66 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.66 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.66 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.66 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.66 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.66 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.66 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.66 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.66 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.66 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 18.55/5.66 The set Q consists of the following terms: 18.55/5.66 18.55/5.66 ways_in_gga(x0, x1) 18.55/5.66 =_in_ga(x0) 18.55/5.66 U4_gga(x0, x1, x2, x3) 18.55/5.66 plus_in_gag(x0, x1) 18.55/5.66 nat_in_g(x0) 18.55/5.66 U1_g(x0) 18.55/5.66 U2_gag(x0, x1) 18.55/5.66 U3_gag(x0) 18.55/5.66 U5_gga(x0, x1, x2, x3) 18.55/5.66 U9_gga(x0, x1, x2, x3) 18.55/5.66 U10_gga(x0, x1, x2) 18.55/5.66 U11_gga(x0) 18.55/5.66 U6_gga(x0, x1, x2, x3) 18.55/5.66 U7_gga(x0, x1) 18.55/5.66 plus_in_gga(x0, x1) 18.55/5.66 U2_gga(x0, x1) 18.55/5.66 U3_gga(x0) 18.55/5.66 U8_gga(x0) 18.55/5.66 18.55/5.66 We have to consider all (P,Q,R)-chains. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (45) QDPOrderProof (EQUIVALENT) 18.55/5.66 We use the reduction pair processor [LPAR04,JAR06]. 18.55/5.66 18.55/5.66 18.55/5.66 The following pairs can be oriented strictly and are deleted. 18.55/5.66 18.55/5.66 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.66 U9_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U10_GGA(s(x3), z2, U3_gag(plus_in_gag(x3, z1))) 18.55/5.66 The remaining pairs can at least be oriented weakly. 18.55/5.66 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 18.55/5.66 18.55/5.66 POL( U6_GGA_4(x_1, ..., x_4) ) = 2x_2 + 1 18.55/5.66 POL( ways_in_gga_2(x_1, x_2) ) = max{0, 2x_1 - 2} 18.55/5.66 POL( 0 ) = 0 18.55/5.66 POL( ways_out_gga_1(x_1) ) = max{0, x_1 - 2} 18.55/5.66 POL( s_1(x_1) ) = 0 18.55/5.66 POL( [] ) = 2 18.55/5.66 POL( ._2(x_1, x_2) ) = x_2 + 1 18.55/5.66 POL( U4_gga_4(x_1, ..., x_4) ) = max{0, 2x_1 + x_2 + x_3 + x_4 - 2} 18.55/5.66 POL( =_in_ga_1(x_1) ) = 2x_1 18.55/5.66 POL( U9_gga_4(x_1, ..., x_4) ) = max{0, x_3 - 2} 18.55/5.66 POL( U10_GGA_3(x_1, ..., x_3) ) = 2x_2 18.55/5.66 POL( U3_gag_1(x_1) ) = max{0, -2} 18.55/5.66 POL( U10_gga_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} 18.55/5.66 POL( U5_GGA_4(x_1, ..., x_4) ) = 2x_3 + 1 18.55/5.66 POL( U5_gga_4(x_1, ..., x_4) ) = max{0, 2x_1 + 2x_3 - 2} 18.55/5.66 POL( plus_in_gag_2(x_1, x_2) ) = max{0, -2} 18.55/5.66 POL( U2_gag_2(x_1, x_2) ) = max{0, 2x_2 - 2} 18.55/5.66 POL( nat_in_g_1(x_1) ) = 2x_1 18.55/5.66 POL( plus_out_gag_1(x_1) ) = 0 18.55/5.66 POL( =_out_ga_1(x_1) ) = 0 18.55/5.66 POL( U6_gga_4(x_1, ..., x_4) ) = x_3 + 2 18.55/5.66 POL( U11_gga_1(x_1) ) = max{0, 2x_1 - 2} 18.55/5.66 POL( U7_gga_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} 18.55/5.66 POL( U8_gga_1(x_1) ) = 2 18.55/5.66 POL( plus_in_gga_2(x_1, x_2) ) = 1 18.55/5.66 POL( U2_gga_2(x_1, x_2) ) = max{0, 2x_1 - 2} 18.55/5.66 POL( nat_out_g ) = 0 18.55/5.66 POL( U1_g_1(x_1) ) = x_1 + 1 18.55/5.66 POL( U3_gga_1(x_1) ) = max{0, -2} 18.55/5.66 POL( plus_out_gga_1(x_1) ) = max{0, -2} 18.55/5.66 POL( WAYS_IN_GGA_2(x_1, x_2) ) = max{0, 2x_2 - 1} 18.55/5.66 POL( U4_GGA_4(x_1, ..., x_4) ) = 2x_3 + 1 18.55/5.66 POL( U9_GGA_4(x_1, ..., x_4) ) = 2x_3 + 1 18.55/5.66 18.55/5.66 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 18.55/5.66 none 18.55/5.66 18.55/5.66 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (46) 18.55/5.66 Obligation: 18.55/5.66 Q DP problem: 18.55/5.66 The TRS P consists of the following rules: 18.55/5.66 18.55/5.66 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.66 U10_GGA(Amount, Coins, plus_out_gag(s(X5))) -> WAYS_IN_GGA(Amount, Coins) 18.55/5.66 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.66 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U9_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.66 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))) 18.55/5.66 18.55/5.66 The TRS R consists of the following rules: 18.55/5.66 18.55/5.66 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.66 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 =_in_ga(X) -> =_out_ga(X) 18.55/5.66 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.66 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.66 nat_in_g(0) -> nat_out_g 18.55/5.66 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.66 U1_g(nat_out_g) -> nat_out_g 18.55/5.66 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.66 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.66 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.66 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.66 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.66 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.66 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.66 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.66 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.66 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.66 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.66 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 18.55/5.66 The set Q consists of the following terms: 18.55/5.66 18.55/5.66 ways_in_gga(x0, x1) 18.55/5.66 =_in_ga(x0) 18.55/5.66 U4_gga(x0, x1, x2, x3) 18.55/5.66 plus_in_gag(x0, x1) 18.55/5.66 nat_in_g(x0) 18.55/5.66 U1_g(x0) 18.55/5.66 U2_gag(x0, x1) 18.55/5.66 U3_gag(x0) 18.55/5.66 U5_gga(x0, x1, x2, x3) 18.55/5.66 U9_gga(x0, x1, x2, x3) 18.55/5.66 U10_gga(x0, x1, x2) 18.55/5.66 U11_gga(x0) 18.55/5.66 U6_gga(x0, x1, x2, x3) 18.55/5.66 U7_gga(x0, x1) 18.55/5.66 plus_in_gga(x0, x1) 18.55/5.66 U2_gga(x0, x1) 18.55/5.66 U3_gga(x0) 18.55/5.66 U8_gga(x0) 18.55/5.66 18.55/5.66 We have to consider all (P,Q,R)-chains. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (47) DependencyGraphProof (EQUIVALENT) 18.55/5.66 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (48) 18.55/5.66 Obligation: 18.55/5.66 Q DP problem: 18.55/5.66 The TRS P consists of the following rules: 18.55/5.66 18.55/5.66 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.66 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.66 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))) 18.55/5.66 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 18.55/5.66 The TRS R consists of the following rules: 18.55/5.66 18.55/5.66 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.66 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 =_in_ga(X) -> =_out_ga(X) 18.55/5.66 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.66 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.66 nat_in_g(0) -> nat_out_g 18.55/5.66 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.66 U1_g(nat_out_g) -> nat_out_g 18.55/5.66 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.66 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.66 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.66 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.66 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.66 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.66 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.66 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.66 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.66 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.66 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.66 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 18.55/5.66 The set Q consists of the following terms: 18.55/5.66 18.55/5.66 ways_in_gga(x0, x1) 18.55/5.66 =_in_ga(x0) 18.55/5.66 U4_gga(x0, x1, x2, x3) 18.55/5.66 plus_in_gag(x0, x1) 18.55/5.66 nat_in_g(x0) 18.55/5.66 U1_g(x0) 18.55/5.66 U2_gag(x0, x1) 18.55/5.66 U3_gag(x0) 18.55/5.66 U5_gga(x0, x1, x2, x3) 18.55/5.66 U9_gga(x0, x1, x2, x3) 18.55/5.66 U10_gga(x0, x1, x2) 18.55/5.66 U11_gga(x0) 18.55/5.66 U6_gga(x0, x1, x2, x3) 18.55/5.66 U7_gga(x0, x1) 18.55/5.66 plus_in_gga(x0, x1) 18.55/5.66 U2_gga(x0, x1) 18.55/5.66 U3_gga(x0) 18.55/5.66 U8_gga(x0) 18.55/5.66 18.55/5.66 We have to consider all (P,Q,R)-chains. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (49) QDPOrderProof (EQUIVALENT) 18.55/5.66 We use the reduction pair processor [LPAR04,JAR06]. 18.55/5.66 18.55/5.66 18.55/5.66 The following pairs can be oriented strictly and are deleted. 18.55/5.66 18.55/5.66 U4_GGA(s(x3), z1, z2, =_out_ga(s(x3))) -> U5_GGA(s(x3), z1, z2, U3_gag(plus_in_gag(z1, x3))) 18.55/5.66 The remaining pairs can at least be oriented weakly. 18.55/5.66 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 18.55/5.66 18.55/5.66 POL( U10_gga_3(x_1, ..., x_3) ) = max{0, x_1 - 2} 18.55/5.66 POL( U6_GGA_4(x_1, ..., x_4) ) = 2x_2 + 2x_3 + 2 18.55/5.66 POL( U3_gag_1(x_1) ) = x_1 18.55/5.66 POL( U5_GGA_4(x_1, ..., x_4) ) = max{0, 2x_3 + 2x_4 - 2} 18.55/5.66 POL( U5_gga_4(x_1, ..., x_4) ) = max{0, x_1 + 2x_3 - 2} 18.55/5.66 POL( plus_in_gag_2(x_1, x_2) ) = 2x_2 18.55/5.66 POL( 0 ) = 2 18.55/5.66 POL( U2_gag_2(x_1, x_2) ) = x_1 + x_2 18.55/5.66 POL( nat_in_g_1(x_1) ) = x_1 18.55/5.66 POL( s_1(x_1) ) = 2x_1 + 2 18.55/5.66 POL( plus_out_gag_1(x_1) ) = x_1 + 2 18.55/5.66 POL( ways_in_gga_2(x_1, x_2) ) = max{0, x_1 - 2} 18.55/5.66 POL( ways_out_gga_1(x_1) ) = max{0, x_1 - 2} 18.55/5.66 POL( [] ) = 2 18.55/5.66 POL( ._2(x_1, x_2) ) = max{0, x_2 - 1} 18.55/5.66 POL( U4_gga_4(x_1, ..., x_4) ) = x_2 + 2x_3 + 1 18.55/5.66 POL( =_in_ga_1(x_1) ) = 0 18.55/5.66 POL( U9_gga_4(x_1, ..., x_4) ) = max{0, 2x_2 + x_3 - 2} 18.55/5.66 POL( =_out_ga_1(x_1) ) = 2x_1 18.55/5.66 POL( U6_gga_4(x_1, ..., x_4) ) = max{0, 2x_3 - 2} 18.55/5.66 POL( U11_gga_1(x_1) ) = 2 18.55/5.66 POL( U7_gga_2(x_1, x_2) ) = x_1 + 2 18.55/5.66 POL( U8_gga_1(x_1) ) = max{0, 2x_1 - 2} 18.55/5.66 POL( plus_in_gga_2(x_1, x_2) ) = 0 18.55/5.66 POL( U2_gga_2(x_1, x_2) ) = 2 18.55/5.66 POL( nat_out_g ) = 2 18.55/5.66 POL( U1_g_1(x_1) ) = 2x_1 + 2 18.55/5.66 POL( U3_gga_1(x_1) ) = max{0, x_1 - 2} 18.55/5.66 POL( plus_out_gga_1(x_1) ) = max{0, x_1 - 2} 18.55/5.66 POL( WAYS_IN_GGA_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 18.55/5.66 POL( U4_GGA_4(x_1, ..., x_4) ) = max{0, 2x_3 + x_4 - 1} 18.55/5.66 18.55/5.66 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 18.55/5.66 18.55/5.66 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.66 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.66 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.66 nat_in_g(0) -> nat_out_g 18.55/5.66 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.66 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.66 U1_g(nat_out_g) -> nat_out_g 18.55/5.66 18.55/5.66 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (50) 18.55/5.66 Obligation: 18.55/5.66 Q DP problem: 18.55/5.66 The TRS P consists of the following rules: 18.55/5.66 18.55/5.66 U6_GGA(C, Coins, NewAmount, ways_out_gga(N1)) -> WAYS_IN_GGA(NewAmount, .(s(C), Coins)) 18.55/5.66 WAYS_IN_GGA(Amount, .(s(C), Coins)) -> U4_GGA(Amount, C, Coins, =_out_ga(Amount)) 18.55/5.66 U5_GGA(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_GGA(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 18.55/5.66 The TRS R consists of the following rules: 18.55/5.66 18.55/5.66 ways_in_gga(0, X1) -> ways_out_gga(s(0)) 18.55/5.66 ways_in_gga(X2, []) -> ways_out_gga(0) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U4_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 =_in_ga(X) -> =_out_ga(X) 18.55/5.66 U4_gga(Amount, C, Coins, =_out_ga(s(X3))) -> U5_gga(Amount, C, Coins, plus_in_gag(s(C), Amount)) 18.55/5.66 plus_in_gag(0, X) -> U2_gag(X, nat_in_g(X)) 18.55/5.66 nat_in_g(0) -> nat_out_g 18.55/5.66 nat_in_g(s(X)) -> U1_g(nat_in_g(X)) 18.55/5.66 U1_g(nat_out_g) -> nat_out_g 18.55/5.66 U2_gag(X, nat_out_g) -> plus_out_gag(X) 18.55/5.66 plus_in_gag(s(X), s(Z)) -> U3_gag(plus_in_gag(X, Z)) 18.55/5.66 U3_gag(plus_out_gag(Y)) -> plus_out_gag(Y) 18.55/5.66 U5_gga(Amount, C, Coins, plus_out_gag(NewAmount)) -> U6_gga(C, Coins, NewAmount, ways_in_gga(Amount, Coins)) 18.55/5.66 ways_in_gga(Amount, .(s(C), Coins)) -> U9_gga(Amount, C, Coins, =_in_ga(Amount)) 18.55/5.66 U9_gga(Amount, C, Coins, =_out_ga(s(X4))) -> U10_gga(Amount, Coins, plus_in_gag(Amount, s(C))) 18.55/5.66 U10_gga(Amount, Coins, plus_out_gag(s(X5))) -> U11_gga(ways_in_gga(Amount, Coins)) 18.55/5.66 U11_gga(ways_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 U6_gga(C, Coins, NewAmount, ways_out_gga(N1)) -> U7_gga(N1, ways_in_gga(NewAmount, .(s(C), Coins))) 18.55/5.66 U7_gga(N1, ways_out_gga(N2)) -> U8_gga(plus_in_gga(N1, N2)) 18.55/5.66 plus_in_gga(0, X) -> U2_gga(X, nat_in_g(X)) 18.55/5.66 U2_gga(X, nat_out_g) -> plus_out_gga(X) 18.55/5.66 plus_in_gga(s(X), Y) -> U3_gga(plus_in_gga(X, Y)) 18.55/5.66 U3_gga(plus_out_gga(Z)) -> plus_out_gga(s(Z)) 18.55/5.66 U8_gga(plus_out_gga(N)) -> ways_out_gga(N) 18.55/5.66 18.55/5.66 The set Q consists of the following terms: 18.55/5.66 18.55/5.66 ways_in_gga(x0, x1) 18.55/5.66 =_in_ga(x0) 18.55/5.66 U4_gga(x0, x1, x2, x3) 18.55/5.66 plus_in_gag(x0, x1) 18.55/5.66 nat_in_g(x0) 18.55/5.66 U1_g(x0) 18.55/5.66 U2_gag(x0, x1) 18.55/5.66 U3_gag(x0) 18.55/5.66 U5_gga(x0, x1, x2, x3) 18.55/5.66 U9_gga(x0, x1, x2, x3) 18.55/5.66 U10_gga(x0, x1, x2) 18.55/5.66 U11_gga(x0) 18.55/5.66 U6_gga(x0, x1, x2, x3) 18.55/5.66 U7_gga(x0, x1) 18.55/5.66 plus_in_gga(x0, x1) 18.55/5.66 U2_gga(x0, x1) 18.55/5.66 U3_gga(x0) 18.55/5.66 U8_gga(x0) 18.55/5.66 18.55/5.66 We have to consider all (P,Q,R)-chains. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (51) DependencyGraphProof (EQUIVALENT) 18.55/5.66 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes. 18.55/5.66 ---------------------------------------- 18.55/5.66 18.55/5.66 (52) 18.55/5.66 TRUE 18.75/5.71 EOF