YES proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToIRSProof [EQUIVALENT, 0 ms] (2) IntTRS (3) TerminationGraphProcessor [SOUND, 93 ms] (4) IntTRS (5) IntTRSCompressionProof [EQUIVALENT, 44 ms] (6) IntTRS (7) RankingReductionPairProof [EQUIVALENT, 36 ms] (8) AND (9) IntTRS (10) TerminationGraphProcessor [EQUIVALENT, 8 ms] (11) YES (12) IntTRS (13) TerminationGraphProcessor [EQUIVALENT, 10 ms] (14) IntTRS (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IntTRS (17) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (18) IntTRS (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] (20) IntTRS (21) RankingReductionPairProof [EQUIVALENT, 0 ms] (22) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/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) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f7 ] = 3*f7_2 + 2*f7_1 + 1 [ f4 ] = 2*f4_1 + 3*f4_2 + 1 The following rules are decreasing: f4(x15:0, x16:0) -> f7(x15:0, x16:0 - 1) :|: x16:0 < x15:0 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(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 no non-trivial SCC(s). ---------------------------------------- (11) YES ---------------------------------------- (12) 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 ---------------------------------------- (13) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (14) 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 ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) 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 ---------------------------------------- (17) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4(x, x1)] = d + x1 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 ---------------------------------------- (18) 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 ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) 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 ---------------------------------------- (21) 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 ---------------------------------------- (22) YES