7.83/2.74 YES 7.83/2.75 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 7.83/2.75 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 7.83/2.75 7.83/2.75 7.83/2.75 Termination of the given C Problem could be proven: 7.83/2.75 7.83/2.75 (0) C Problem 7.83/2.75 (1) CToIRSProof [EQUIVALENT, 0 ms] 7.83/2.75 (2) IntTRS 7.83/2.75 (3) TerminationGraphProcessor [SOUND, 70 ms] 7.83/2.75 (4) IntTRS 7.83/2.75 (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.83/2.75 (6) IntTRS 7.83/2.75 (7) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 7.83/2.75 (8) IntTRS 7.83/2.75 (9) PolynomialOrderProcessor [EQUIVALENT, 17 ms] 7.83/2.75 (10) IntTRS 7.83/2.75 (11) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 7.83/2.75 (12) YES 7.83/2.75 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (0) 7.83/2.75 Obligation: 7.83/2.75 c file /export/starexec/sandbox/benchmark/theBenchmark.c 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (1) CToIRSProof (EQUIVALENT) 7.83/2.75 Parsed C Integer Program as IRS. 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (2) 7.83/2.75 Obligation: 7.83/2.75 Rules: 7.83/2.75 f1(c, x, y, z) -> f2(c, x_1, y, z) :|: TRUE 7.83/2.75 f2(x1, x2, x3, x4) -> f3(x1, x2, x5, x4) :|: TRUE 7.83/2.75 f3(x6, x7, x8, x9) -> f4(x6, x7, x8, x10) :|: TRUE 7.83/2.75 f4(x11, x12, x13, x14) -> f5(0, x12, x13, x14) :|: TRUE 7.83/2.75 f7(x15, x16, x17, x18) -> f8(x15, x16, arith, x18) :|: TRUE && arith = x17 - 1 7.83/2.75 f8(x55, x56, x57, x58) -> f9(x59, x56, x57, x58) :|: TRUE && x59 = x55 + 1 7.83/2.75 f6(x23, x24, x25, x26) -> f7(x23, x24, x25, x26) :|: x25 > x26 7.83/2.75 f9(x27, x28, x29, x30) -> f6(x27, x28, x29, x30) :|: TRUE 7.83/2.75 f6(x31, x32, x33, x34) -> f10(x31, x32, x33, x34) :|: x33 <= x34 7.83/2.75 f10(x60, x61, x62, x63) -> f11(x64, x61, x62, x63) :|: TRUE && x64 = x60 + 1 7.83/2.75 f11(x65, x66, x67, x68) -> f12(x65, x69, x67, x68) :|: TRUE && x69 = x66 - 1 7.83/2.75 f5(x43, x44, x45, x46) -> f6(x43, x44, x45, x46) :|: x44 > x46 7.83/2.75 f12(x47, x48, x49, x50) -> f5(x47, x48, x49, x50) :|: TRUE 7.83/2.75 f5(x51, x52, x53, x54) -> f13(x51, x52, x53, x54) :|: x52 <= x54 7.83/2.75 Start term: f1(c, x, y, z) 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (3) TerminationGraphProcessor (SOUND) 7.83/2.75 Constructed the termination graph and obtained one non-trivial SCC. 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (4) 7.83/2.75 Obligation: 7.83/2.75 Rules: 7.83/2.75 f5(x43, x44, x45, x46) -> f6(x43, x44, x45, x46) :|: x44 > x46 7.83/2.75 f12(x47, x48, x49, x50) -> f5(x47, x48, x49, x50) :|: TRUE 7.83/2.75 f11(x65, x66, x67, x68) -> f12(x65, x69, x67, x68) :|: TRUE && x69 = x66 - 1 7.83/2.75 f10(x60, x61, x62, x63) -> f11(x64, x61, x62, x63) :|: TRUE && x64 = x60 + 1 7.83/2.75 f6(x31, x32, x33, x34) -> f10(x31, x32, x33, x34) :|: x33 <= x34 7.83/2.75 f9(x27, x28, x29, x30) -> f6(x27, x28, x29, x30) :|: TRUE 7.83/2.75 f8(x55, x56, x57, x58) -> f9(x59, x56, x57, x58) :|: TRUE && x59 = x55 + 1 7.83/2.75 f7(x15, x16, x17, x18) -> f8(x15, x16, arith, x18) :|: TRUE && arith = x17 - 1 7.83/2.75 f6(x23, x24, x25, x26) -> f7(x23, x24, x25, x26) :|: x25 > x26 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (5) IntTRSCompressionProof (EQUIVALENT) 7.83/2.75 Compressed rules. 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (6) 7.83/2.75 Obligation: 7.83/2.75 Rules: 7.83/2.75 f6(x31:0, x32:0, x33:0, x34:0) -> f6(x31:0 + 1, x32:0 - 1, x33:0, x34:0) :|: x34:0 >= x33:0 && x34:0 < x32:0 - 1 7.83/2.75 f6(x23:0, x24:0, x25:0, x26:0) -> f6(x23:0 + 1, x24:0, x25:0 - 1, x26:0) :|: x26:0 < x25:0 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (7) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 7.83/2.75 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 7.83/2.75 7.83/2.75 f6(x1, x2, x3, x4) -> f6(x2, x3, x4) 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (8) 7.83/2.75 Obligation: 7.83/2.75 Rules: 7.83/2.75 f6(x32:0, x33:0, x34:0) -> f6(x32:0 - 1, x33:0, x34:0) :|: x34:0 >= x33:0 && x34:0 < x32:0 - 1 7.83/2.75 f6(x24:0, x25:0, x26:0) -> f6(x24:0, x25:0 - 1, x26:0) :|: x26:0 < x25:0 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (9) PolynomialOrderProcessor (EQUIVALENT) 7.83/2.75 Found the following polynomial interpretation: 7.83/2.75 [f6(x, x1, x2)] = x1 - x2 7.83/2.75 7.83/2.75 The following rules are decreasing: 7.83/2.75 f6(x24:0, x25:0, x26:0) -> f6(x24:0, x25:0 - 1, x26:0) :|: x26:0 < x25:0 7.83/2.75 The following rules are bounded: 7.83/2.75 f6(x24:0, x25:0, x26:0) -> f6(x24:0, x25:0 - 1, x26:0) :|: x26:0 < x25:0 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (10) 7.83/2.75 Obligation: 7.83/2.75 Rules: 7.83/2.75 f6(x32:0, x33:0, x34:0) -> f6(x32:0 - 1, x33:0, x34:0) :|: x34:0 >= x33:0 && x34:0 < x32:0 - 1 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (11) PolynomialOrderProcessor (EQUIVALENT) 7.83/2.75 Found the following polynomial interpretation: 7.83/2.75 [f6(x, x1, x2)] = x - x2 7.83/2.75 7.83/2.75 The following rules are decreasing: 7.83/2.75 f6(x32:0, x33:0, x34:0) -> f6(x32:0 - 1, x33:0, x34:0) :|: x34:0 >= x33:0 && x34:0 < x32:0 - 1 7.83/2.75 The following rules are bounded: 7.83/2.75 f6(x32:0, x33:0, x34:0) -> f6(x32:0 - 1, x33:0, x34:0) :|: x34:0 >= x33:0 && x34:0 < x32:0 - 1 7.83/2.75 7.83/2.75 ---------------------------------------- 7.83/2.75 7.83/2.75 (12) 7.83/2.75 YES 7.83/2.81 EOF