36.32/10.09 YES 36.32/10.10 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 36.32/10.10 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 36.32/10.10 36.32/10.10 36.32/10.10 Termination of the given C Problem could be proven: 36.32/10.10 36.32/10.10 (0) C Problem 36.32/10.10 (1) CToIRSProof [EQUIVALENT, 0 ms] 36.32/10.10 (2) IntTRS 36.32/10.10 (3) TerminationGraphProcessor [SOUND, 103 ms] 36.32/10.10 (4) IntTRS 36.32/10.10 (5) IntTRSCompressionProof [EQUIVALENT, 24 ms] 36.32/10.10 (6) IntTRS 36.32/10.10 (7) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 36.32/10.10 (8) IntTRS 36.32/10.10 (9) TerminationGraphProcessor [EQUIVALENT, 24 ms] 36.32/10.10 (10) IntTRS 36.32/10.10 (11) IntTRSCompressionProof [EQUIVALENT, 12 ms] 36.32/10.10 (12) IntTRS 36.32/10.10 (13) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 36.32/10.10 (14) IntTRS 36.32/10.10 (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] 36.32/10.10 (16) IntTRS 36.32/10.10 (17) RankingReductionPairProof [EQUIVALENT, 0 ms] 36.32/10.10 (18) YES 36.32/10.10 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (0) 36.32/10.10 Obligation: 36.32/10.10 c file /export/starexec/sandbox/benchmark/theBenchmark.c 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (1) CToIRSProof (EQUIVALENT) 36.32/10.10 Parsed C Integer Program as IRS. 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (2) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f1(x, y, z) -> f2(x_1, y, z) :|: TRUE 36.32/10.10 f2(x1, x2, x3) -> f3(x1, x4, x3) :|: TRUE 36.32/10.10 f5(x5, x6, x7) -> f8(x5, x6, x6) :|: TRUE 36.32/10.10 f6(x8, x9, x10) -> f9(x8, x9, x8) :|: TRUE 36.32/10.10 f4(x11, x12, x13) -> f5(x11, x12, x13) :|: x11 > x12 36.32/10.10 f4(x14, x15, x16) -> f6(x14, x15, x16) :|: x14 <= x15 36.32/10.10 f8(x17, x18, x19) -> f7(x17, x18, x19) :|: TRUE 36.32/10.10 f9(x20, x21, x22) -> f7(x20, x21, x22) :|: TRUE 36.32/10.10 f10(x23, x24, x25) -> f13(x23, arith, x25) :|: TRUE && arith = x24 + x23 36.32/10.10 f13(x64, x65, x66) -> f14(x67, x65, x66) :|: TRUE && x67 = x66 - 1 36.32/10.10 f14(x68, x69, x70) -> f15(x68, x69, x71) :|: TRUE && x71 = x69 + x70 36.32/10.10 f11(x72, x73, x74) -> f16(x75, x73, x74) :|: TRUE && x75 = x73 + x72 36.32/10.10 f16(x76, x77, x78) -> f17(x76, x79, x78) :|: TRUE && x79 = x78 - 1 36.32/10.10 f17(x80, x81, x82) -> f18(x80, x81, x83) :|: TRUE && x83 = x80 + x82 36.32/10.10 f7(x41, x42, x43) -> f10(x41, x42, x43) :|: x44 < 0 36.32/10.10 f7(x84, x85, x86) -> f10(x84, x85, x86) :|: x87 > 0 36.32/10.10 f7(x45, x46, x47) -> f11(x45, x46, x47) :|: x48 = 0 36.32/10.10 f15(x49, x50, x51) -> f12(x49, x50, x51) :|: TRUE 36.32/10.10 f18(x52, x53, x54) -> f12(x52, x53, x54) :|: TRUE 36.32/10.10 f3(x55, x56, x57) -> f4(x55, x56, x57) :|: x56 > 0 && x55 > 0 36.32/10.10 f12(x58, x59, x60) -> f3(x58, x59, x60) :|: TRUE 36.32/10.10 f3(x61, x62, x63) -> f19(x61, x62, x63) :|: x62 <= 0 36.32/10.10 f3(x88, x89, x90) -> f19(x88, x89, x90) :|: x88 <= 0 36.32/10.10 Start term: f1(x, y, z) 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (3) TerminationGraphProcessor (SOUND) 36.32/10.10 Constructed the termination graph and obtained one non-trivial SCC. 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (4) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f3(x55, x56, x57) -> f4(x55, x56, x57) :|: x56 > 0 && x55 > 0 36.32/10.10 f12(x58, x59, x60) -> f3(x58, x59, x60) :|: TRUE 36.32/10.10 f15(x49, x50, x51) -> f12(x49, x50, x51) :|: TRUE 36.32/10.10 f14(x68, x69, x70) -> f15(x68, x69, x71) :|: TRUE && x71 = x69 + x70 36.32/10.10 f13(x64, x65, x66) -> f14(x67, x65, x66) :|: TRUE && x67 = x66 - 1 36.32/10.10 f10(x23, x24, x25) -> f13(x23, arith, x25) :|: TRUE && arith = x24 + x23 36.32/10.10 f7(x41, x42, x43) -> f10(x41, x42, x43) :|: x44 < 0 36.32/10.10 f8(x17, x18, x19) -> f7(x17, x18, x19) :|: TRUE 36.32/10.10 f5(x5, x6, x7) -> f8(x5, x6, x6) :|: TRUE 36.32/10.10 f4(x11, x12, x13) -> f5(x11, x12, x13) :|: x11 > x12 36.32/10.10 f9(x20, x21, x22) -> f7(x20, x21, x22) :|: TRUE 36.32/10.10 f6(x8, x9, x10) -> f9(x8, x9, x8) :|: TRUE 36.32/10.10 f4(x14, x15, x16) -> f6(x14, x15, x16) :|: x14 <= x15 36.32/10.10 f7(x84, x85, x86) -> f10(x84, x85, x86) :|: x87 > 0 36.32/10.10 f18(x52, x53, x54) -> f12(x52, x53, x54) :|: TRUE 36.32/10.10 f17(x80, x81, x82) -> f18(x80, x81, x83) :|: TRUE && x83 = x80 + x82 36.32/10.10 f16(x76, x77, x78) -> f17(x76, x79, x78) :|: TRUE && x79 = x78 - 1 36.32/10.10 f11(x72, x73, x74) -> f16(x75, x73, x74) :|: TRUE && x75 = x73 + x72 36.32/10.10 f7(x45, x46, x47) -> f11(x45, x46, x47) :|: x48 = 0 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (5) IntTRSCompressionProof (EQUIVALENT) 36.32/10.10 Compressed rules. 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (6) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f7(x45:0, x46:0, x47:0) -> f12(x46:0 + x45:0, x47:0 - 1, x46:0 + x45:0 + x47:0) :|: TRUE 36.32/10.10 f7(x41:0, x42:0, x43:0) -> f12(x43:0 - 1, x42:0 + x41:0, x42:0 + x41:0 + x43:0) :|: x44:0 < 0 36.32/10.10 f12(x58:0, x59:0, x60:0) -> f7(x58:0, x59:0, x59:0) :|: x59:0 > 0 && x58:0 > 0 && x59:0 < x58:0 36.32/10.10 f7(x84:0, x85:0, x86:0) -> f12(x86:0 - 1, x85:0 + x84:0, x85:0 + x84:0 + x86:0) :|: x87:0 > 0 36.32/10.10 f12(x, x1, x2) -> f7(x, x1, x) :|: x1 > 0 && x > 0 && x1 >= x 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (7) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 36.32/10.10 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 36.32/10.10 36.32/10.10 f12(x1, x2, x3) -> f12(x1, x2) 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (8) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f7(x45:0, x46:0, x47:0) -> f12(x46:0 + x45:0, x47:0 - 1) :|: TRUE 36.32/10.10 f7(x41:0, x42:0, x43:0) -> f12(x43:0 - 1, x42:0 + x41:0) :|: x44:0 < 0 36.32/10.10 f12(x58:0, x59:0) -> f7(x58:0, x59:0, x59:0) :|: x59:0 > 0 && x58:0 > 0 && x59:0 < x58:0 36.32/10.10 f7(x84:0, x85:0, x86:0) -> f12(x86:0 - 1, x85:0 + x84:0) :|: x87:0 > 0 36.32/10.10 f12(x, x1) -> f7(x, x1, x) :|: x1 > 0 && x > 0 && x1 >= x 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (9) TerminationGraphProcessor (EQUIVALENT) 36.32/10.10 Constructed the termination graph and obtained one non-trivial SCC. 36.32/10.10 36.32/10.10 f7(x45:0, x46:0, x47:0) -> f12(x46:0 + x45:0, x47:0 - 1) :|: TRUE and 36.32/10.10 f12(x58:0, x59:0) -> f7(x58:0, x59:0, x59:0) :|: x59:0 > 0 && x58:0 > 0 && x59:0 < x58:0 36.32/10.10 have been merged into the new rule 36.32/10.10 f7(x22, x23, x24) -> f7(x23 + x22, x24 - 1, x24 - 1) :|: TRUE && (x24 - 1 > 0 && x23 + x22 > 0 && x24 - 1 < x23 + x22) 36.32/10.10 36.32/10.10 f7(x45:0, x46:0, x47:0) -> f12(x46:0 + x45:0, x47:0 - 1) :|: TRUE and 36.32/10.10 f12(x, x1) -> f7(x, x1, x) :|: x1 > 0 && x > 0 && x1 >= x 36.32/10.10 have been merged into the new rule 36.32/10.10 f7(x33, x34, x35) -> f7(x34 + x33, x35 - 1, x34 + x33) :|: TRUE && (x35 - 1 > 0 && x34 + x33 > 0 && x35 - 1 >= x34 + x33) 36.32/10.10 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (10) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f7(x25, x26, x27) -> f7(x26 + x25, x27 + -1, x27 + -1) :|: TRUE && x27 >= 2 && x26 + x25 >= 1 && x27 + -1 * x26 + -1 * x25 <= 0 36.32/10.10 f7(x36, x37, x38) -> f7(x37 + x36, x38 + -1, x37 + x36) :|: TRUE && x38 >= 2 && x37 + x36 >= 1 && x38 + -1 * x37 + -1 * x36 >= 1 36.32/10.10 f12(x58:0, x59:0) -> f7(x58:0, x59:0, x59:0) :|: TRUE && x59:0 >= 1 && x58:0 >= 1 && x59:0 + -1 * x58:0 <= -1 36.32/10.10 f7(x41:0, x42:0, x43:0) -> f12(x43:0 + -1, x42:0 + x41:0) :|: TRUE && x44:0 <= -1 36.32/10.10 f12(x, x1) -> f7(x, x1, x) :|: TRUE && x1 >= 1 && x >= 1 && x1 + -1 * x >= 0 36.32/10.10 f7(x84:0, x85:0, x86:0) -> f12(x86:0 + -1, x85:0 + x84:0) :|: TRUE && x87:0 >= 1 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (11) IntTRSCompressionProof (EQUIVALENT) 36.32/10.10 Compressed rules. 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (12) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f7(x41:0:0, x42:0:0, x43:0:0) -> f12(x43:0:0 + -1, x42:0:0 + x41:0:0) :|: TRUE 36.32/10.10 f7(x25:0, x26:0, x27:0) -> f7(x26:0 + x25:0, x27:0 - 1, x27:0 - 1) :|: x26:0 + x25:0 >= 1 && x27:0 > 1 && x27:0 + -1 * x26:0 + -1 * x25:0 <= 0 36.32/10.10 f7(x36:0, x37:0, x38:0) -> f7(x37:0 + x36:0, x38:0 - 1, x37:0 + x36:0) :|: x37:0 + x36:0 >= 1 && x38:0 > 1 && x38:0 + -1 * x37:0 + -1 * x36:0 >= 1 36.32/10.10 f12(x58:0:0, x59:0:0) -> f7(x58:0:0, x59:0:0, x59:0:0) :|: x58:0:0 > 0 && x59:0:0 > 0 && x59:0:0 + -1 * x58:0:0 <= -1 36.32/10.10 f12(x:0, x1:0) -> f7(x:0, x1:0, x:0) :|: x:0 > 0 && x1:0 > 0 && x1:0 + -1 * x:0 >= 0 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (13) PolynomialOrderProcessor (EQUIVALENT) 36.32/10.10 Found the following polynomial interpretation: 36.32/10.10 [f7(x, x1, x2)] = -2 - x - x1 + 2*x2 36.32/10.10 [f12(x3, x4)] = -3 + 2*x3 - x4 36.32/10.10 36.32/10.10 The following rules are decreasing: 36.32/10.10 f7(x41:0:0, x42:0:0, x43:0:0) -> f12(x43:0:0 + -1, x42:0:0 + x41:0:0) :|: TRUE 36.32/10.10 f7(x25:0, x26:0, x27:0) -> f7(x26:0 + x25:0, x27:0 - 1, x27:0 - 1) :|: x26:0 + x25:0 >= 1 && x27:0 > 1 && x27:0 + -1 * x26:0 + -1 * x25:0 <= 0 36.32/10.10 f7(x36:0, x37:0, x38:0) -> f7(x37:0 + x36:0, x38:0 - 1, x37:0 + x36:0) :|: x37:0 + x36:0 >= 1 && x38:0 > 1 && x38:0 + -1 * x37:0 + -1 * x36:0 >= 1 36.32/10.10 f12(x58:0:0, x59:0:0) -> f7(x58:0:0, x59:0:0, x59:0:0) :|: x58:0:0 > 0 && x59:0:0 > 0 && x59:0:0 + -1 * x58:0:0 <= -1 36.32/10.10 The following rules are bounded: 36.32/10.10 f7(x36:0, x37:0, x38:0) -> f7(x37:0 + x36:0, x38:0 - 1, x37:0 + x36:0) :|: x37:0 + x36:0 >= 1 && x38:0 > 1 && x38:0 + -1 * x37:0 + -1 * x36:0 >= 1 36.32/10.10 f12(x58:0:0, x59:0:0) -> f7(x58:0:0, x59:0:0, x59:0:0) :|: x58:0:0 > 0 && x59:0:0 > 0 && x59:0:0 + -1 * x58:0:0 <= -1 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (14) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f7(x41:0:0, x42:0:0, x43:0:0) -> f12(x43:0:0 + -1, x42:0:0 + x41:0:0) :|: TRUE 36.32/10.10 f7(x25:0, x26:0, x27:0) -> f7(x26:0 + x25:0, x27:0 - 1, x27:0 - 1) :|: x26:0 + x25:0 >= 1 && x27:0 > 1 && x27:0 + -1 * x26:0 + -1 * x25:0 <= 0 36.32/10.10 f12(x:0, x1:0) -> f7(x:0, x1:0, x:0) :|: x:0 > 0 && x1:0 > 0 && x1:0 + -1 * x:0 >= 0 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (15) IntTRSCompressionProof (EQUIVALENT) 36.32/10.10 Compressed rules. 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (16) 36.32/10.10 Obligation: 36.32/10.10 Rules: 36.32/10.10 f7(x41:0:0:0, x42:0:0:0, x43:0:0:0) -> f7(x43:0:0:0 - 1, x42:0:0:0 + x41:0:0:0, x43:0:0:0 - 1) :|: x43:0:0:0 > 1 && x42:0:0:0 + x41:0:0:0 > 0 && x42:0:0:0 + x41:0:0:0 + -1 * (x43:0:0:0 - 1) >= 0 36.32/10.10 f7(x25:0:0, x26:0:0, x27:0:0) -> f7(x26:0:0 + x25:0:0, x27:0:0 - 1, x27:0:0 - 1) :|: x26:0:0 + x25:0:0 >= 1 && x27:0:0 > 1 && x27:0:0 + -1 * x26:0:0 + -1 * x25:0:0 <= 0 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (17) RankingReductionPairProof (EQUIVALENT) 36.32/10.10 Interpretation: 36.32/10.10 [ f7 ] = f7_3 36.32/10.10 36.32/10.10 The following rules are decreasing: 36.32/10.10 f7(x41:0:0:0, x42:0:0:0, x43:0:0:0) -> f7(x43:0:0:0 - 1, x42:0:0:0 + x41:0:0:0, x43:0:0:0 - 1) :|: x43:0:0:0 > 1 && x42:0:0:0 + x41:0:0:0 > 0 && x42:0:0:0 + x41:0:0:0 + -1 * (x43:0:0:0 - 1) >= 0 36.32/10.10 f7(x25:0:0, x26:0:0, x27:0:0) -> f7(x26:0:0 + x25:0:0, x27:0:0 - 1, x27:0:0 - 1) :|: x26:0:0 + x25:0:0 >= 1 && x27:0:0 > 1 && x27:0:0 + -1 * x26:0:0 + -1 * x25:0:0 <= 0 36.32/10.10 36.32/10.10 The following rules are bounded: 36.32/10.10 f7(x41:0:0:0, x42:0:0:0, x43:0:0:0) -> f7(x43:0:0:0 - 1, x42:0:0:0 + x41:0:0:0, x43:0:0:0 - 1) :|: x43:0:0:0 > 1 && x42:0:0:0 + x41:0:0:0 > 0 && x42:0:0:0 + x41:0:0:0 + -1 * (x43:0:0:0 - 1) >= 0 36.32/10.10 f7(x25:0:0, x26:0:0, x27:0:0) -> f7(x26:0:0 + x25:0:0, x27:0:0 - 1, x27:0:0 - 1) :|: x26:0:0 + x25:0:0 >= 1 && x27:0:0 > 1 && x27:0:0 + -1 * x26:0:0 + -1 * x25:0:0 <= 0 36.32/10.10 36.32/10.10 36.32/10.10 ---------------------------------------- 36.32/10.10 36.32/10.10 (18) 36.32/10.10 YES 36.50/10.18 EOF