/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/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, 93 ms] (4) IntTRS (5) IntTRSCompressionProof [EQUIVALENT, 25 ms] (6) IntTRS (7) PolynomialOrderProcessor [EQUIVALENT, 1 ms] (8) IntTRS (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] (10) IntTRS (11) PolynomialOrderProcessor [EQUIVALENT, 8 ms] (12) IntTRS (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] (14) IntTRS (15) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (16) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(x, y, z) -> f2(x_1, y, z) :|: TRUE f2(x1, x2, x3) -> f3(x1, x4, x3) :|: TRUE f3(x5, x6, x7) -> f4(x5, x6, x8) :|: TRUE f6(x9, x10, x11) -> f9(arith, x10, x11) :|: TRUE && arith = x9 - 1 f10(x63, x64, x65) -> f13(x63, x66, x65) :|: TRUE && x66 = x64 - 1 f13(x15, x16, x17) -> f14(x15, x16, x18) :|: TRUE f11(x67, x68, x69) -> f15(x67, x68, x70) :|: TRUE && x70 = x69 - 1 f15(x22, x23, x24) -> f16(x25, x23, x24) :|: TRUE f7(x26, x27, x28) -> f10(x26, x27, x28) :|: x29 < 0 f7(x71, x72, x73) -> f10(x71, x72, x73) :|: x74 > 0 f7(x30, x31, x32) -> f11(x30, x31, x32) :|: x33 = 0 f14(x34, x35, x36) -> f12(x34, x35, x36) :|: TRUE f16(x37, x38, x39) -> f12(x37, x38, x39) :|: TRUE f5(x40, x41, x42) -> f6(x40, x41, x42) :|: x43 < 0 f5(x75, x76, x77) -> f6(x75, x76, x77) :|: x78 > 0 f5(x44, x45, x46) -> f7(x44, x45, x46) :|: x47 = 0 f9(x48, x49, x50) -> f8(x48, x49, x50) :|: TRUE f12(x51, x52, x53) -> f8(x51, x52, x53) :|: TRUE f4(x54, x55, x56) -> f5(x54, x55, x56) :|: x54 > 0 && x55 > 0 && x56 > 0 f8(x57, x58, x59) -> f4(x57, x58, x59) :|: TRUE f4(x60, x61, x62) -> f17(x60, x61, x62) :|: x62 <= 0 f4(x79, x80, x81) -> f17(x79, x80, x81) :|: x79 <= 0 f4(x82, x83, x84) -> f17(x82, x83, x84) :|: x83 <= 0 Start term: f1(x, y, z) ---------------------------------------- (3) TerminationGraphProcessor (SOUND) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (4) Obligation: Rules: f4(x54, x55, x56) -> f5(x54, x55, x56) :|: x54 > 0 && x55 > 0 && x56 > 0 f8(x57, x58, x59) -> f4(x57, x58, x59) :|: TRUE f9(x48, x49, x50) -> f8(x48, x49, x50) :|: TRUE f6(x9, x10, x11) -> f9(arith, x10, x11) :|: TRUE && arith = x9 - 1 f5(x40, x41, x42) -> f6(x40, x41, x42) :|: x43 < 0 f5(x75, x76, x77) -> f6(x75, x76, x77) :|: x78 > 0 f12(x51, x52, x53) -> f8(x51, x52, x53) :|: TRUE f14(x34, x35, x36) -> f12(x34, x35, x36) :|: TRUE f13(x15, x16, x17) -> f14(x15, x16, x18) :|: TRUE f10(x63, x64, x65) -> f13(x63, x66, x65) :|: TRUE && x66 = x64 - 1 f7(x26, x27, x28) -> f10(x26, x27, x28) :|: x29 < 0 f5(x44, x45, x46) -> f7(x44, x45, x46) :|: x47 = 0 f7(x71, x72, x73) -> f10(x71, x72, x73) :|: x74 > 0 f16(x37, x38, x39) -> f12(x37, x38, x39) :|: TRUE f15(x22, x23, x24) -> f16(x25, x23, x24) :|: TRUE f11(x67, x68, x69) -> f15(x67, x68, x70) :|: TRUE && x70 = x69 - 1 f7(x30, x31, x32) -> f11(x30, x31, x32) :|: x33 = 0 ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f8(x57:0, x58:0, x59:0) -> f8(x57:0 - 1, x58:0, x59:0) :|: x59:0 > 0 && x43:0 < 0 && x58:0 > 0 && x57:0 > 0 f8(x, x1, x2) -> f8(x, x1 - 1, x3) :|: x2 > 0 && x4 < 0 && x1 > 0 && x > 0 f8(x5, x6, x7) -> f8(x5, x6 - 1, x8) :|: x7 > 0 && x9 > 0 && x6 > 0 && x5 > 0 f8(x10, x11, x12) -> f8(x13, x11, x12 - 1) :|: x10 > 0 && x11 > 0 && x12 > 0 f8(x14, x15, x16) -> f8(x14 - 1, x15, x16) :|: x16 > 0 && x17 > 0 && x15 > 0 && x14 > 0 ---------------------------------------- (7) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f8(x, x1, x2)] = -1 + x1 The following rules are decreasing: f8(x, x1, x2) -> f8(x, x1 - 1, x3) :|: x2 > 0 && x4 < 0 && x1 > 0 && x > 0 f8(x5, x6, x7) -> f8(x5, x6 - 1, x8) :|: x7 > 0 && x9 > 0 && x6 > 0 && x5 > 0 The following rules are bounded: f8(x57:0, x58:0, x59:0) -> f8(x57:0 - 1, x58:0, x59:0) :|: x59:0 > 0 && x43:0 < 0 && x58:0 > 0 && x57:0 > 0 f8(x, x1, x2) -> f8(x, x1 - 1, x3) :|: x2 > 0 && x4 < 0 && x1 > 0 && x > 0 f8(x5, x6, x7) -> f8(x5, x6 - 1, x8) :|: x7 > 0 && x9 > 0 && x6 > 0 && x5 > 0 f8(x10, x11, x12) -> f8(x13, x11, x12 - 1) :|: x10 > 0 && x11 > 0 && x12 > 0 f8(x14, x15, x16) -> f8(x14 - 1, x15, x16) :|: x16 > 0 && x17 > 0 && x15 > 0 && x14 > 0 ---------------------------------------- (8) Obligation: Rules: f8(x57:0, x58:0, x59:0) -> f8(x57:0 - 1, x58:0, x59:0) :|: x59:0 > 0 && x43:0 < 0 && x58:0 > 0 && x57:0 > 0 f8(x10, x11, x12) -> f8(x13, x11, x12 - 1) :|: x10 > 0 && x11 > 0 && x12 > 0 f8(x14, x15, x16) -> f8(x14 - 1, x15, x16) :|: x16 > 0 && x17 > 0 && x15 > 0 && x14 > 0 ---------------------------------------- (9) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (10) Obligation: Rules: f8(x57:0:0, x58:0:0, x59:0:0) -> f8(x57:0:0 - 1, x58:0:0, x59:0:0) :|: x58:0:0 > 0 && x57:0:0 > 0 && x43:0:0 < 0 && x59:0:0 > 0 f8(x10:0, x11:0, x12:0) -> f8(x13:0, x11:0, x12:0 - 1) :|: x10:0 > 0 && x11:0 > 0 && x12:0 > 0 f8(x14:0, x15:0, x16:0) -> f8(x14:0 - 1, x15:0, x16:0) :|: x15:0 > 0 && x14:0 > 0 && x17:0 > 0 && x16:0 > 0 ---------------------------------------- (11) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f8(x, x1, x2)] = -1 + x2 The following rules are decreasing: f8(x10:0, x11:0, x12:0) -> f8(x13:0, x11:0, x12:0 - 1) :|: x10:0 > 0 && x11:0 > 0 && x12:0 > 0 The following rules are bounded: f8(x57:0:0, x58:0:0, x59:0:0) -> f8(x57:0:0 - 1, x58:0:0, x59:0:0) :|: x58:0:0 > 0 && x57:0:0 > 0 && x43:0:0 < 0 && x59:0:0 > 0 f8(x10:0, x11:0, x12:0) -> f8(x13:0, x11:0, x12:0 - 1) :|: x10:0 > 0 && x11:0 > 0 && x12:0 > 0 f8(x14:0, x15:0, x16:0) -> f8(x14:0 - 1, x15:0, x16:0) :|: x15:0 > 0 && x14:0 > 0 && x17:0 > 0 && x16:0 > 0 ---------------------------------------- (12) Obligation: Rules: f8(x57:0:0, x58:0:0, x59:0:0) -> f8(x57:0:0 - 1, x58:0:0, x59:0:0) :|: x58:0:0 > 0 && x57:0:0 > 0 && x43:0:0 < 0 && x59:0:0 > 0 f8(x14:0, x15:0, x16:0) -> f8(x14:0 - 1, x15:0, x16:0) :|: x15:0 > 0 && x14:0 > 0 && x17:0 > 0 && x16:0 > 0 ---------------------------------------- (13) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (14) Obligation: Rules: f8(x14:0:0, x15:0:0, x16:0:0) -> f8(x14:0:0 - 1, x15:0:0, x16:0:0) :|: x17:0:0 > 0 && x16:0:0 > 0 && x14:0:0 > 0 && x15:0:0 > 0 f8(x57:0:0:0, x58:0:0:0, x59:0:0:0) -> f8(x57:0:0:0 - 1, x58:0:0:0, x59:0:0:0) :|: x43:0:0:0 < 0 && x59:0:0:0 > 0 && x57:0:0:0 > 0 && x58:0:0:0 > 0 ---------------------------------------- (15) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f8(x, x1, x2)] = x The following rules are decreasing: f8(x14:0:0, x15:0:0, x16:0:0) -> f8(x14:0:0 - 1, x15:0:0, x16:0:0) :|: x17:0:0 > 0 && x16:0:0 > 0 && x14:0:0 > 0 && x15:0:0 > 0 f8(x57:0:0:0, x58:0:0:0, x59:0:0:0) -> f8(x57:0:0:0 - 1, x58:0:0:0, x59:0:0:0) :|: x43:0:0:0 < 0 && x59:0:0:0 > 0 && x57:0:0:0 > 0 && x58:0:0:0 > 0 The following rules are bounded: f8(x14:0:0, x15:0:0, x16:0:0) -> f8(x14:0:0 - 1, x15:0:0, x16:0:0) :|: x17:0:0 > 0 && x16:0:0 > 0 && x14:0:0 > 0 && x15:0:0 > 0 f8(x57:0:0:0, x58:0:0:0, x59:0:0:0) -> f8(x57:0:0:0 - 1, x58:0:0:0, x59:0:0:0) :|: x43:0:0:0 < 0 && x59:0:0:0 > 0 && x57:0:0:0 > 0 && x58:0:0:0 > 0 ---------------------------------------- (16) YES