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