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, 66 ms] (4) AND (5) IntTRS (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IntTRS (8) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (9) IntTRS (10) PolynomialOrderProcessor [EQUIVALENT, 2 ms] (11) YES (12) IntTRS (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] (14) IntTRS (15) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (16) IntTRS (17) RankingReductionPairProof [EQUIVALENT, 21 ms] (18) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(i, j, c) -> f2(i, j, 0) :|: TRUE f2(x, x1, x2) -> f3(0, x1, x2) :|: TRUE f4(x3, x4, x5) -> f5(x3, x4, arith) :|: TRUE && arith = x5 + 1 f5(x36, x37, x38) -> f6(x39, x37, x38) :|: TRUE && x39 = x36 + 1 f3(x9, x10, x11) -> f4(x9, x10, x11) :|: x9 < 100 f6(x12, x13, x14) -> f3(x12, x13, x14) :|: TRUE f3(x15, x16, x17) -> f7(x15, x16, x17) :|: x15 >= 100 f7(x18, x19, x20) -> f8(x18, 5, x20) :|: TRUE f9(x40, x41, x42) -> f10(x40, x41, x43) :|: TRUE && x43 = x42 + 1 f10(x44, x45, x46) -> f11(x44, x47, x46) :|: TRUE && x47 = x45 + 3 f8(x27, x28, x29) -> f9(x27, x28, x29) :|: x28 < 21 f11(x30, x31, x32) -> f8(x30, x31, x32) :|: TRUE f8(x33, x34, x35) -> f12(x33, x34, x35) :|: x34 >= 21 Start term: f1(i, j, c) ---------------------------------------- (3) TerminationGraphProcessor (SOUND) Constructed the termination graph and obtained 2 non-trivial SCCs. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Rules: f3(x9, x10, x11) -> f4(x9, x10, x11) :|: x9 < 100 f6(x12, x13, x14) -> f3(x12, x13, x14) :|: TRUE f5(x36, x37, x38) -> f6(x39, x37, x38) :|: TRUE && x39 = x36 + 1 f4(x3, x4, x5) -> f5(x3, x4, arith) :|: TRUE && arith = x5 + 1 ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f5(x36:0, x37:0, x38:0) -> f5(x36:0 + 1, x37:0, x38:0 + 1) :|: x36:0 < 99 ---------------------------------------- (8) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f5(x1, x2, x3) -> f5(x1) ---------------------------------------- (9) Obligation: Rules: f5(x36:0) -> f5(x36:0 + 1) :|: x36:0 < 99 ---------------------------------------- (10) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f5(x)] = 98 - x The following rules are decreasing: f5(x36:0) -> f5(x36:0 + 1) :|: x36:0 < 99 The following rules are bounded: f5(x36:0) -> f5(x36:0 + 1) :|: x36:0 < 99 ---------------------------------------- (11) YES ---------------------------------------- (12) Obligation: Rules: f8(x27, x28, x29) -> f9(x27, x28, x29) :|: x28 < 21 f11(x30, x31, x32) -> f8(x30, x31, x32) :|: TRUE f10(x44, x45, x46) -> f11(x44, x47, x46) :|: TRUE && x47 = x45 + 3 f9(x40, x41, x42) -> f10(x40, x41, x43) :|: TRUE && x43 = x42 + 1 ---------------------------------------- (13) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (14) Obligation: Rules: f10(x44:0, x45:0, x46:0) -> f10(x44:0, x45:0 + 3, x46:0 + 1) :|: x45:0 < 18 ---------------------------------------- (15) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f10(x1, x2, x3) -> f10(x2) ---------------------------------------- (16) Obligation: Rules: f10(x45:0) -> f10(x45:0 + 3) :|: x45:0 < 18 ---------------------------------------- (17) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f10 ] = -1/3*f10_1 The following rules are decreasing: f10(x45:0) -> f10(x45:0 + 3) :|: x45:0 < 18 The following rules are bounded: f10(x45:0) -> f10(x45:0 + 3) :|: x45:0 < 18 ---------------------------------------- (18) YES