5.44/2.33 YES 5.44/2.35 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 5.44/2.35 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 5.44/2.35 5.44/2.35 5.44/2.35 Termination of the given C Problem could be proven: 5.44/2.35 5.44/2.35 (0) C Problem 5.44/2.35 (1) CToIRSProof [EQUIVALENT, 0 ms] 5.44/2.35 (2) IntTRS 5.44/2.35 (3) TerminationGraphProcessor [SOUND, 62 ms] 5.44/2.35 (4) IntTRS 5.44/2.35 (5) IntTRSCompressionProof [EQUIVALENT, 34 ms] 5.44/2.35 (6) IntTRS 5.44/2.35 (7) RankingReductionPairProof [EQUIVALENT, 31 ms] 5.44/2.35 (8) IntTRS 5.44/2.35 (9) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 5.44/2.35 (10) IntTRS 5.44/2.35 (11) PolynomialOrderProcessor [EQUIVALENT, 3 ms] 5.44/2.35 (12) YES 5.44/2.35 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (0) 5.44/2.35 Obligation: 5.44/2.35 c file /export/starexec/sandbox/benchmark/theBenchmark.c 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (1) CToIRSProof (EQUIVALENT) 5.44/2.35 Parsed C Integer Program as IRS. 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (2) 5.44/2.35 Obligation: 5.44/2.35 Rules: 5.44/2.35 f1(i, j, N) -> f2(i, x_1, N) :|: TRUE 5.44/2.35 f2(x, x1, x2) -> f3(x, x1, x3) :|: TRUE 5.44/2.35 f3(x4, x5, x6) -> f4(x6, x5, x6) :|: TRUE 5.44/2.35 f6(x7, x8, x9) -> f9(x7, arith, x9) :|: TRUE && arith = x8 - 1 5.44/2.35 f7(x10, x11, x12) -> f10(x10, x12, x12) :|: TRUE 5.44/2.35 f10(x37, x38, x39) -> f11(x40, x38, x39) :|: TRUE && x40 = x37 - 1 5.44/2.35 f5(x16, x17, x18) -> f6(x16, x17, x18) :|: x17 > 0 5.44/2.35 f5(x19, x20, x21) -> f7(x19, x20, x21) :|: x20 <= 0 5.44/2.35 f9(x22, x23, x24) -> f8(x22, x23, x24) :|: TRUE 5.44/2.35 f11(x25, x26, x27) -> f8(x25, x26, x27) :|: TRUE 5.44/2.35 f4(x28, x29, x30) -> f5(x28, x29, x30) :|: x28 > 0 5.44/2.35 f8(x31, x32, x33) -> f4(x31, x32, x33) :|: TRUE 5.44/2.35 f4(x34, x35, x36) -> f12(x34, x35, x36) :|: x34 <= 0 5.44/2.35 Start term: f1(i, j, N) 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (3) TerminationGraphProcessor (SOUND) 5.44/2.35 Constructed the termination graph and obtained one non-trivial SCC. 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (4) 5.44/2.35 Obligation: 5.44/2.35 Rules: 5.44/2.35 f4(x28, x29, x30) -> f5(x28, x29, x30) :|: x28 > 0 5.44/2.35 f8(x31, x32, x33) -> f4(x31, x32, x33) :|: TRUE 5.44/2.35 f9(x22, x23, x24) -> f8(x22, x23, x24) :|: TRUE 5.44/2.35 f6(x7, x8, x9) -> f9(x7, arith, x9) :|: TRUE && arith = x8 - 1 5.44/2.35 f5(x16, x17, x18) -> f6(x16, x17, x18) :|: x17 > 0 5.44/2.35 f11(x25, x26, x27) -> f8(x25, x26, x27) :|: TRUE 5.44/2.35 f10(x37, x38, x39) -> f11(x40, x38, x39) :|: TRUE && x40 = x37 - 1 5.44/2.35 f7(x10, x11, x12) -> f10(x10, x12, x12) :|: TRUE 5.44/2.35 f5(x19, x20, x21) -> f7(x19, x20, x21) :|: x20 <= 0 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (5) IntTRSCompressionProof (EQUIVALENT) 5.44/2.35 Compressed rules. 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (6) 5.44/2.35 Obligation: 5.44/2.35 Rules: 5.44/2.35 f8(x31:0, x32:0, x33:0) -> f8(x31:0, x32:0 - 1, x33:0) :|: x31:0 > 0 && x32:0 > 0 5.44/2.35 f8(x, x1, x2) -> f8(x - 1, x2, x2) :|: x > 0 && x1 < 1 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (7) RankingReductionPairProof (EQUIVALENT) 5.44/2.35 Interpretation: 5.44/2.35 [ f8 ] = f8_1 5.44/2.35 5.44/2.35 The following rules are decreasing: 5.44/2.35 f8(x, x1, x2) -> f8(x - 1, x2, x2) :|: x > 0 && x1 < 1 5.44/2.35 5.44/2.35 The following rules are bounded: 5.44/2.35 f8(x31:0, x32:0, x33:0) -> f8(x31:0, x32:0 - 1, x33:0) :|: x31:0 > 0 && x32:0 > 0 5.44/2.35 f8(x, x1, x2) -> f8(x - 1, x2, x2) :|: x > 0 && x1 < 1 5.44/2.35 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (8) 5.44/2.35 Obligation: 5.44/2.35 Rules: 5.44/2.35 f8(x31:0, x32:0, x33:0) -> f8(x31:0, x32:0 - 1, x33:0) :|: x31:0 > 0 && x32:0 > 0 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (9) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 5.44/2.35 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 5.44/2.35 5.44/2.35 f8(x1, x2, x3) -> f8(x1, x2) 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (10) 5.44/2.35 Obligation: 5.44/2.35 Rules: 5.44/2.35 f8(x31:0, x32:0) -> f8(x31:0, x32:0 - 1) :|: x31:0 > 0 && x32:0 > 0 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (11) PolynomialOrderProcessor (EQUIVALENT) 5.44/2.35 Found the following polynomial interpretation: 5.44/2.35 [f8(x, x1)] = x1 5.44/2.35 5.44/2.35 The following rules are decreasing: 5.44/2.35 f8(x31:0, x32:0) -> f8(x31:0, x32:0 - 1) :|: x31:0 > 0 && x32:0 > 0 5.44/2.35 The following rules are bounded: 5.44/2.35 f8(x31:0, x32:0) -> f8(x31:0, x32:0 - 1) :|: x31:0 > 0 && x32:0 > 0 5.44/2.35 5.44/2.35 ---------------------------------------- 5.44/2.35 5.44/2.35 (12) 5.44/2.35 YES 5.94/2.38 EOF