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