7.10/2.50 YES 7.10/2.51 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 7.10/2.51 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 7.10/2.51 7.10/2.51 7.10/2.51 Termination of the given C Problem could be proven: 7.10/2.51 7.10/2.51 (0) C Problem 7.10/2.51 (1) CToIRSProof [EQUIVALENT, 0 ms] 7.10/2.51 (2) IntTRS 7.10/2.51 (3) TerminationGraphProcessor [SOUND, 53 ms] 7.10/2.51 (4) IntTRS 7.10/2.51 (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.10/2.51 (6) IntTRS 7.10/2.51 (7) TerminationGraphProcessor [EQUIVALENT, 3 ms] 7.10/2.51 (8) IntTRS 7.10/2.51 (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.10/2.51 (10) IntTRS 7.10/2.51 (11) RankingReductionPairProof [EQUIVALENT, 0 ms] 7.10/2.51 (12) YES 7.10/2.51 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (0) 7.10/2.51 Obligation: 7.10/2.51 c file /export/starexec/sandbox/benchmark/theBenchmark.c 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (1) CToIRSProof (EQUIVALENT) 7.10/2.51 Parsed C Integer Program as IRS. 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (2) 7.10/2.51 Obligation: 7.10/2.51 Rules: 7.10/2.51 f1(x, y) -> f2(x_1, y) :|: TRUE 7.10/2.51 f2(x1, x2) -> f3(x1, x3) :|: TRUE 7.10/2.51 f4(x4, x5) -> f5(arith, x5) :|: TRUE && arith = x4 - 1 7.10/2.51 f5(x14, x15) -> f6(x14, x16) :|: TRUE && x16 = 0 - 2 * x15 7.10/2.51 f3(x8, x9) -> f4(x8, x9) :|: x8 + x9 > 0 7.10/2.51 f6(x10, x11) -> f3(x10, x11) :|: TRUE 7.10/2.51 f3(x12, x13) -> f7(x12, x13) :|: x12 + x13 <= 0 7.10/2.51 Start term: f1(x, y) 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (3) TerminationGraphProcessor (SOUND) 7.10/2.51 Constructed the termination graph and obtained one non-trivial SCC. 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (4) 7.10/2.51 Obligation: 7.10/2.51 Rules: 7.10/2.51 f3(x8, x9) -> f4(x8, x9) :|: x8 + x9 > 0 7.10/2.51 f6(x10, x11) -> f3(x10, x11) :|: TRUE 7.10/2.51 f5(x14, x15) -> f6(x14, x16) :|: TRUE && x16 = 0 - 2 * x15 7.10/2.51 f4(x4, x5) -> f5(arith, x5) :|: TRUE && arith = x4 - 1 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (5) IntTRSCompressionProof (EQUIVALENT) 7.10/2.51 Compressed rules. 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (6) 7.10/2.51 Obligation: 7.10/2.51 Rules: 7.10/2.51 f5(x14:0, x15:0) -> f5(x14:0 - 1, 0 - 2 * x15:0) :|: x14:0 + (0 - 2 * x15:0) > 0 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (7) TerminationGraphProcessor (EQUIVALENT) 7.10/2.51 Constructed the termination graph and obtained one non-trivial SCC. 7.10/2.51 7.10/2.51 f5(x14:0, x15:0) -> f5(x14:0 - 1, 0 - 2 * x15:0) :|: x14:0 + (0 - 2 * x15:0) > 0 7.10/2.51 has been transformed into 7.10/2.51 f5(x14:0, x15:0) -> f5(x14:0 - 1, 0 - 2 * x15:0) :|: x15:0 = 0 - 2 * x5 && (x14:0 = x4 - 1 && x14:0 + (0 - 2 * x15:0) > 0) && x4 + (0 - 2 * x5) > 0. 7.10/2.51 7.10/2.51 7.10/2.51 f5(x14:0, x15:0) -> f5(x14:0 - 1, 0 - 2 * x15:0) :|: x15:0 = 0 - 2 * x5 && (x14:0 = x4 - 1 && x14:0 + (0 - 2 * x15:0) > 0) && x4 + (0 - 2 * x5) > 0 and 7.10/2.51 f5(x14:0, x15:0) -> f5(x14:0 - 1, 0 - 2 * x15:0) :|: x15:0 = 0 - 2 * x5 && (x14:0 = x4 - 1 && x14:0 + (0 - 2 * x15:0) > 0) && x4 + (0 - 2 * x5) > 0 7.10/2.51 have been merged into the new rule 7.10/2.51 f5(x14, x15) -> f5(x14 - 1 - 1, 0 - 2 * (0 - 2 * x15)) :|: x15 = 0 - 2 * x16 && (x14 = x17 - 1 && x14 + (0 - 2 * x15) > 0) && x17 + (0 - 2 * x16) > 0 && (0 - 2 * x15 = 0 - 2 * x18 && (x14 - 1 = x19 - 1 && x14 - 1 + (0 - 2 * (0 - 2 * x15)) > 0) && x19 + (0 - 2 * x18) > 0) 7.10/2.51 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (8) 7.10/2.51 Obligation: 7.10/2.51 Rules: 7.10/2.51 f5(x20, x21) -> f5(x20 + -2, 4 * x21) :|: TRUE && x21 + 2 * x22 = 0 && x20 + -1 * x23 = -1 && x20 + -2 * x21 >= 1 && x23 + -2 * x22 >= 1 && -1 * x21 + x24 = 0 && x20 + -1 * x25 = 0 && x20 + 4 * x21 >= 2 && x25 + -2 * x24 >= 1 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (9) IntTRSCompressionProof (EQUIVALENT) 7.10/2.51 Compressed rules. 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (10) 7.10/2.51 Obligation: 7.10/2.51 Rules: 7.10/2.51 f5(x20:0, x21:0) -> f5(x20:0 - 2, 4 * x21:0) :|: x20:0 + 4 * x21:0 >= 2 && x25:0 + -2 * x24:0 >= 1 && x20:0 + -1 * x25:0 = 0 && 0 = -1 * x21:0 + x24:0 && x23:0 + -2 * x22:0 >= 1 && x20:0 + -2 * x21:0 >= 1 && x21:0 + 2 * x22:0 = 0 && x20:0 + -1 * x23:0 = -1 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (11) RankingReductionPairProof (EQUIVALENT) 7.10/2.51 Interpretation: 7.10/2.51 [ f5 ] = 1/2*f5_1 7.10/2.51 7.10/2.51 The following rules are decreasing: 7.10/2.51 f5(x20:0, x21:0) -> f5(x20:0 - 2, 4 * x21:0) :|: x20:0 + 4 * x21:0 >= 2 && x25:0 + -2 * x24:0 >= 1 && x20:0 + -1 * x25:0 = 0 && 0 = -1 * x21:0 + x24:0 && x23:0 + -2 * x22:0 >= 1 && x20:0 + -2 * x21:0 >= 1 && x21:0 + 2 * x22:0 = 0 && x20:0 + -1 * x23:0 = -1 7.10/2.51 7.10/2.51 The following rules are bounded: 7.10/2.51 f5(x20:0, x21:0) -> f5(x20:0 - 2, 4 * x21:0) :|: x20:0 + 4 * x21:0 >= 2 && x25:0 + -2 * x24:0 >= 1 && x20:0 + -1 * x25:0 = 0 && 0 = -1 * x21:0 + x24:0 && x23:0 + -2 * x22:0 >= 1 && x20:0 + -2 * x21:0 >= 1 && x21:0 + 2 * x22:0 = 0 && x20:0 + -1 * x23:0 = -1 7.10/2.51 7.10/2.51 7.10/2.51 ---------------------------------------- 7.10/2.51 7.10/2.51 (12) 7.10/2.51 YES 7.24/2.57 EOF