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, 88 ms] (4) IntTRS (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] (6) IntTRS (7) PolynomialOrderProcessor [EQUIVALENT, 19 ms] (8) AND (9) IntTRS (10) TerminationGraphProcessor [EQUIVALENT, 14 ms] (11) IntTRS (12) IntTRSCompressionProof [EQUIVALENT, 0 ms] (13) IntTRS (14) RankingReductionPairProof [EQUIVALENT, 0 ms] (15) YES (16) IntTRS (17) TerminationGraphProcessor [EQUIVALENT, 12 ms] (18) IntTRS (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] (20) IntTRS (21) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (22) IntTRS (23) IntTRSCompressionProof [EQUIVALENT, 0 ms] (24) IntTRS (25) RankingReductionPairProof [EQUIVALENT, 0 ms] (26) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(p, q) -> f2(p, x_1) :|: TRUE f2(x, x1) -> f3(x2, x1) :|: TRUE f5(x3, x4) -> f8(x3, arith) :|: TRUE && arith = x4 - 1 f9(x29, x30) -> f12(x31, x30) :|: TRUE && x31 = x29 - 1 f6(x7, x8) -> f9(x7, x8) :|: x7 < x8 f6(x9, x10) -> f10(x9, x10) :|: x9 >= x10 f12(x11, x12) -> f11(x11, x12) :|: TRUE f10(x13, x14) -> f11(x13, x14) :|: TRUE f4(x15, x16) -> f5(x15, x16) :|: x16 < x15 f4(x17, x18) -> f6(x17, x18) :|: x18 >= x17 f8(x19, x20) -> f7(x19, x20) :|: TRUE f11(x21, x22) -> f7(x21, x22) :|: TRUE f3(x23, x24) -> f4(x23, x24) :|: x24 > 0 && x23 > 0 && x23 < x24 f3(x32, x33) -> f4(x32, x33) :|: x33 > 0 && x32 > 0 && x32 > x33 f7(x25, x26) -> f3(x25, x26) :|: TRUE f3(x27, x28) -> f13(x27, x28) :|: x27 = x28 f3(x34, x35) -> f13(x34, x35) :|: x35 <= 0 f3(x36, x37) -> f13(x36, x37) :|: x36 <= 0 Start term: f1(p, q) ---------------------------------------- (3) TerminationGraphProcessor (SOUND) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (4) Obligation: Rules: f3(x23, x24) -> f4(x23, x24) :|: x24 > 0 && x23 > 0 && x23 < x24 f7(x25, x26) -> f3(x25, x26) :|: TRUE f8(x19, x20) -> f7(x19, x20) :|: TRUE f5(x3, x4) -> f8(x3, arith) :|: TRUE && arith = x4 - 1 f4(x15, x16) -> f5(x15, x16) :|: x16 < x15 f3(x32, x33) -> f4(x32, x33) :|: x33 > 0 && x32 > 0 && x32 > x33 f11(x21, x22) -> f7(x21, x22) :|: TRUE f12(x11, x12) -> f11(x11, x12) :|: TRUE f9(x29, x30) -> f12(x31, x30) :|: TRUE && x31 = x29 - 1 f6(x7, x8) -> f9(x7, x8) :|: x7 < x8 f4(x17, x18) -> f6(x17, x18) :|: x18 >= x17 f10(x13, x14) -> f11(x13, x14) :|: TRUE f6(x9, x10) -> f10(x9, x10) :|: x9 >= x10 ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f7(x25:0, x26:0) -> f4(x25:0, x26:0) :|: x26:0 > 0 && x25:0 > 0 && x26:0 < x25:0 f4(x15:0, x16:0) -> f7(x15:0, x16:0 - 1) :|: x16:0 < x15:0 f4(x17:0, x17:01) -> f7(x17:0, x17:0) :|: TRUE && x17:0 = x17:01 f4(x, x1) -> f7(x - 1, x1) :|: x1 > x f7(x2, x3) -> f4(x2, x3) :|: x3 > 0 && x2 > 0 && x3 > x2 ---------------------------------------- (7) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f7(x, x1)] = -2 + x [f4(x2, x3)] = -2 + x2 The following rules are decreasing: f4(x, x1) -> f7(x - 1, x1) :|: x1 > x The following rules are bounded: f7(x25:0, x26:0) -> f4(x25:0, x26:0) :|: x26:0 > 0 && x25:0 > 0 && x26:0 < x25:0 ---------------------------------------- (8) Complex Obligation (AND) ---------------------------------------- (9) Obligation: Rules: f7(x25:0, x26:0) -> f4(x25:0, x26:0) :|: x26:0 > 0 && x25:0 > 0 && x26:0 < x25:0 f4(x15:0, x16:0) -> f7(x15:0, x16:0 - 1) :|: x16:0 < x15:0 f4(x17:0, x17:01) -> f7(x17:0, x17:0) :|: TRUE && x17:0 = x17:01 f7(x2, x3) -> f4(x2, x3) :|: x3 > 0 && x2 > 0 && x3 > x2 ---------------------------------------- (10) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (11) Obligation: Rules: f7(x25:0, x26:0) -> f4(x25:0, x26:0) :|: x26:0 > 0 && x25:0 > 0 && x26:0 < x25:0 f4(x15:0, x16:0) -> f7(x15:0, x16:0 - 1) :|: x16:0 < x15:0 f7(x2, x3) -> f4(x2, x3) :|: x3 > 0 && x2 > 0 && x3 > x2 ---------------------------------------- (12) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (13) Obligation: Rules: f7(x25:0:0, x26:0:0) -> f7(x25:0:0, x26:0:0 - 1) :|: x26:0:0 < x25:0:0 && x25:0:0 > 0 && x26:0:0 > 0 ---------------------------------------- (14) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f7 ] = f7_2 The following rules are decreasing: f7(x25:0:0, x26:0:0) -> f7(x25:0:0, x26:0:0 - 1) :|: x26:0:0 < x25:0:0 && x25:0:0 > 0 && x26:0:0 > 0 The following rules are bounded: f7(x25:0:0, x26:0:0) -> f7(x25:0:0, x26:0:0 - 1) :|: x26:0:0 < x25:0:0 && x25:0:0 > 0 && x26:0:0 > 0 ---------------------------------------- (15) YES ---------------------------------------- (16) Obligation: Rules: f4(x15:0, x16:0) -> f7(x15:0, x16:0 - 1) :|: x16:0 < x15:0 f4(x17:0, x17:01) -> f7(x17:0, x17:0) :|: TRUE && x17:0 = x17:01 f4(x, x1) -> f7(x - 1, x1) :|: x1 > x f7(x2, x3) -> f4(x2, x3) :|: x3 > 0 && x2 > 0 && x3 > x2 ---------------------------------------- (17) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (18) Obligation: Rules: f4(x15:0, x16:0) -> f7(x15:0, x16:0 - 1) :|: x16:0 < x15:0 f7(x2, x3) -> f4(x2, x3) :|: x3 > 0 && x2 > 0 && x3 > x2 f4(x, x1) -> f7(x - 1, x1) :|: x1 > x ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) Obligation: Rules: f4(x15:0:0, x16:0:0) -> f4(x15:0:0, x16:0:0 - 1) :|: x16:0:0 - 1 > x15:0:0 && x16:0:0 < x15:0:0 && x15:0:0 > 0 && x16:0:0 > 1 f4(x:0, x1:0) -> f4(x:0 - 1, x1:0) :|: x:0 - 1 < x1:0 && x:0 < x1:0 && x:0 > 1 && x1:0 > 0 ---------------------------------------- (21) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4(x, x1)] = d + c2*x1 + c3*x1^2 The following rules are decreasing: f4(x15:0:0, x16:0:0) -> f4(x15:0:0, x16:0:0 - 1) :|: x16:0:0 - 1 > x15:0:0 && x16:0:0 < x15:0:0 && x15:0:0 > 0 && x16:0:0 > 1 The following rules are bounded: f4(x15:0:0, x16:0:0) -> f4(x15:0:0, x16:0:0 - 1) :|: x16:0:0 - 1 > x15:0:0 && x16:0:0 < x15:0:0 && x15:0:0 > 0 && x16:0:0 > 1 ---------------------------------------- (22) Obligation: Rules: f4(x:0, x1:0) -> f4(x:0 - 1, x1:0) :|: x:0 - 1 < x1:0 && x:0 < x1:0 && x:0 > 1 && x1:0 > 0 ---------------------------------------- (23) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (24) Obligation: Rules: f4(x:0:0, x1:0:0) -> f4(x:0:0 - 1, x1:0:0) :|: x:0:0 > 1 && x1:0:0 > 0 && x:0:0 < x1:0:0 && x:0:0 - 1 < x1:0:0 ---------------------------------------- (25) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f4 ] = f4_1 The following rules are decreasing: f4(x:0:0, x1:0:0) -> f4(x:0:0 - 1, x1:0:0) :|: x:0:0 > 1 && x1:0:0 > 0 && x:0:0 < x1:0:0 && x:0:0 - 1 < x1:0:0 The following rules are bounded: f4(x:0:0, x1:0:0) -> f4(x:0:0 - 1, x1:0:0) :|: x:0:0 > 1 && x1:0:0 > 0 && x:0:0 < x1:0:0 && x:0:0 - 1 < x1:0:0 ---------------------------------------- (26) YES