7.46/2.85 YES 7.46/2.87 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 7.46/2.87 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 7.46/2.87 7.46/2.87 7.46/2.87 Termination of the given C Problem could be proven: 7.46/2.87 7.46/2.87 (0) C Problem 7.46/2.87 (1) CToIRSProof [EQUIVALENT, 0 ms] 7.46/2.87 (2) IntTRS 7.46/2.87 (3) TerminationGraphProcessor [SOUND, 70 ms] 7.46/2.87 (4) IntTRS 7.46/2.87 (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.46/2.87 (6) IntTRS 7.46/2.87 (7) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 7.46/2.87 (8) IntTRS 7.46/2.87 (9) PolynomialOrderProcessor [EQUIVALENT, 4 ms] 7.46/2.87 (10) IntTRS 7.46/2.87 (11) TerminationGraphProcessor [EQUIVALENT, 2 ms] 7.46/2.87 (12) AND 7.46/2.87 (13) IntTRS 7.46/2.87 (14) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 7.46/2.87 (15) YES 7.46/2.87 (16) IntTRS 7.46/2.87 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] 7.46/2.87 (18) IntTRS 7.46/2.87 (19) PolynomialOrderProcessor [EQUIVALENT, 2 ms] 7.46/2.87 (20) YES 7.46/2.87 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (0) 7.46/2.87 Obligation: 7.46/2.87 c file /export/starexec/sandbox/benchmark/theBenchmark.c 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (1) CToIRSProof (EQUIVALENT) 7.46/2.87 Parsed C Integer Program as IRS. 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (2) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f1(x, y, z) -> f2(0, y, z) :|: TRUE 7.46/2.87 f2(x1, x2, x3) -> f3(x1, 100, x3) :|: TRUE 7.46/2.87 f3(x4, x5, x6) -> f4(x4, x5, x7) :|: TRUE 7.46/2.87 f6(x8, x9, x10) -> f9(arith, x9, x10) :|: TRUE && arith = x8 + 1 7.46/2.87 f7(x35, x36, x37) -> f10(x38, x36, x37) :|: TRUE && x38 = x35 + 2 7.46/2.87 f5(x14, x15, x16) -> f6(x14, x15, x16) :|: x16 = 0 7.46/2.87 f5(x17, x18, x19) -> f7(x17, x18, x19) :|: x19 < 0 7.46/2.87 f5(x39, x40, x41) -> f7(x39, x40, x41) :|: x41 > 0 7.46/2.87 f9(x20, x21, x22) -> f8(x20, x21, x22) :|: TRUE 7.46/2.87 f10(x23, x24, x25) -> f8(x23, x24, x25) :|: TRUE 7.46/2.87 f4(x26, x27, x28) -> f5(x26, x27, x28) :|: x26 < 40 7.46/2.87 f8(x29, x30, x31) -> f4(x29, x30, x31) :|: TRUE 7.46/2.87 f4(x32, x33, x34) -> f11(x32, x33, x34) :|: x32 >= 40 7.46/2.87 Start term: f1(x, y, z) 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (3) TerminationGraphProcessor (SOUND) 7.46/2.87 Constructed the termination graph and obtained one non-trivial SCC. 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (4) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f4(x26, x27, x28) -> f5(x26, x27, x28) :|: x26 < 40 7.46/2.87 f8(x29, x30, x31) -> f4(x29, x30, x31) :|: TRUE 7.46/2.87 f9(x20, x21, x22) -> f8(x20, x21, x22) :|: TRUE 7.46/2.87 f6(x8, x9, x10) -> f9(arith, x9, x10) :|: TRUE && arith = x8 + 1 7.46/2.87 f5(x14, x15, x16) -> f6(x14, x15, x16) :|: x16 = 0 7.46/2.87 f10(x23, x24, x25) -> f8(x23, x24, x25) :|: TRUE 7.46/2.87 f7(x35, x36, x37) -> f10(x38, x36, x37) :|: TRUE && x38 = x35 + 2 7.46/2.87 f5(x17, x18, x19) -> f7(x17, x18, x19) :|: x19 < 0 7.46/2.87 f5(x39, x40, x41) -> f7(x39, x40, x41) :|: x41 > 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (5) IntTRSCompressionProof (EQUIVALENT) 7.46/2.87 Compressed rules. 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (6) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f8(x29:0, x30:0, x31:0) -> f8(x29:0 + 2, x30:0, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 f8(x, x1, x2) -> f8(x + 1, x1, 0) :|: x < 40 && x2 = 0 7.46/2.87 f8(x3, x4, x5) -> f8(x3 + 2, x4, x5) :|: x3 < 40 && x5 > 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (7) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 7.46/2.87 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 7.46/2.87 7.46/2.87 f8(x1, x2, x3) -> f8(x1, x3) 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (8) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f8(x29:0, x31:0) -> f8(x29:0 + 2, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 f8(x, x2) -> f8(x + 1, 0) :|: x < 40 && x2 = 0 7.46/2.87 f8(x3, x5) -> f8(x3 + 2, x5) :|: x3 < 40 && x5 > 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (9) PolynomialOrderProcessor (EQUIVALENT) 7.46/2.87 Found the following polynomial interpretation: 7.46/2.87 [f8(x, x1)] = 38 - x + x1 7.46/2.87 7.46/2.87 The following rules are decreasing: 7.46/2.87 f8(x29:0, x31:0) -> f8(x29:0 + 2, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 f8(x, x2) -> f8(x + 1, 0) :|: x < 40 && x2 = 0 7.46/2.87 f8(x3, x5) -> f8(x3 + 2, x5) :|: x3 < 40 && x5 > 0 7.46/2.87 The following rules are bounded: 7.46/2.87 f8(x3, x5) -> f8(x3 + 2, x5) :|: x3 < 40 && x5 > 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (10) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f8(x29:0, x31:0) -> f8(x29:0 + 2, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 f8(x, x2) -> f8(x + 1, 0) :|: x < 40 && x2 = 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (11) TerminationGraphProcessor (EQUIVALENT) 7.46/2.87 Constructed the termination graph and obtained 2 non-trivial SCCs. 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (12) 7.46/2.87 Complex Obligation (AND) 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (13) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f8(x29:0, x31:0) -> f8(x29:0 + 2, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (14) PolynomialOrderProcessor (EQUIVALENT) 7.46/2.87 Found the following polynomial interpretation: 7.46/2.87 [f8(x, x1)] = 39 - x 7.46/2.87 7.46/2.87 The following rules are decreasing: 7.46/2.87 f8(x29:0, x31:0) -> f8(x29:0 + 2, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 The following rules are bounded: 7.46/2.87 f8(x29:0, x31:0) -> f8(x29:0 + 2, x31:0) :|: x29:0 < 40 && x31:0 < 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (15) 7.46/2.87 YES 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (16) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f8(x, x2) -> f8(x + 1, 0) :|: x < 40 && x2 = 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (17) IntTRSCompressionProof (EQUIVALENT) 7.46/2.87 Compressed rules. 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (18) 7.46/2.87 Obligation: 7.46/2.87 Rules: 7.46/2.87 f8(x:0, cons_0) -> f8(x:0 + 1, 0) :|: x:0 < 40 && cons_0 = 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (19) PolynomialOrderProcessor (EQUIVALENT) 7.46/2.87 Found the following polynomial interpretation: 7.46/2.87 [f8(x, x1)] = 39 - x + c1*x1 7.46/2.87 7.46/2.87 The following rules are decreasing: 7.46/2.87 f8(x:0, cons_0) -> f8(x:0 + 1, 0) :|: x:0 < 40 && cons_0 = 0 7.46/2.87 The following rules are bounded: 7.46/2.87 f8(x:0, cons_0) -> f8(x:0 + 1, 0) :|: x:0 < 40 && cons_0 = 0 7.46/2.87 7.46/2.87 ---------------------------------------- 7.46/2.87 7.46/2.87 (20) 7.46/2.87 YES 7.72/2.92 EOF