6.73/2.58 YES 6.73/2.59 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 6.73/2.59 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.73/2.59 6.73/2.59 6.73/2.59 Termination of the given C Problem could be proven: 6.73/2.59 6.73/2.59 (0) C Problem 6.73/2.59 (1) CToIRSProof [EQUIVALENT, 0 ms] 6.73/2.59 (2) IntTRS 6.73/2.59 (3) TerminationGraphProcessor [SOUND, 77 ms] 6.73/2.59 (4) IntTRS 6.73/2.59 (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] 6.73/2.59 (6) IntTRS 6.73/2.59 (7) PolynomialOrderProcessor [EQUIVALENT, 16 ms] 6.73/2.59 (8) IntTRS 6.73/2.59 (9) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 6.73/2.59 (10) YES 6.73/2.59 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (0) 6.73/2.59 Obligation: 6.73/2.59 c file /export/starexec/sandbox/benchmark/theBenchmark.c 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (1) CToIRSProof (EQUIVALENT) 6.73/2.59 Parsed C Integer Program as IRS. 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (2) 6.73/2.59 Obligation: 6.73/2.59 Rules: 6.73/2.59 f1(i, j, m, n) -> f2(i, j, m, x_1) :|: TRUE 6.73/2.59 f2(x, x1, x2, x3) -> f3(x, x1, x4, x3) :|: TRUE 6.73/2.59 f4(x5, x6, x7, x8) -> f7(0, x6, x7, x8) :|: TRUE 6.73/2.59 f7(x9, x10, x11, x12) -> f8(x9, 0, x11, x12) :|: TRUE 6.73/2.59 f10(x13, x14, x15, x16) -> f13(x13, arith, x15, x16) :|: TRUE && arith = x14 + 1 6.73/2.59 f11(x17, x18, x19, x20) -> f14(x17, 0, x19, x20) :|: TRUE 6.73/2.59 f14(x69, x70, x71, x72) -> f15(x73, x70, x71, x72) :|: TRUE && x73 = x69 + 1 6.73/2.59 f9(x25, x26, x27, x28) -> f10(x25, x26, x27, x28) :|: x26 < x27 6.73/2.59 f9(x29, x30, x31, x32) -> f11(x29, x30, x31, x32) :|: x30 >= x31 6.73/2.59 f13(x33, x34, x35, x36) -> f12(x33, x34, x35, x36) :|: TRUE 6.73/2.59 f15(x37, x38, x39, x40) -> f12(x37, x38, x39, x40) :|: TRUE 6.73/2.59 f8(x41, x42, x43, x44) -> f9(x41, x42, x43, x44) :|: x41 < x44 6.73/2.59 f12(x45, x46, x47, x48) -> f8(x45, x46, x47, x48) :|: TRUE 6.73/2.59 f8(x49, x50, x51, x52) -> f16(x49, x50, x51, x52) :|: x49 >= x52 6.73/2.59 f3(x53, x54, x55, x56) -> f4(x53, x54, x55, x56) :|: x55 > 0 && x56 > x55 6.73/2.59 f3(x57, x58, x59, x60) -> f5(x57, x58, x59, x60) :|: x59 <= 0 6.73/2.59 f3(x74, x75, x76, x77) -> f5(x74, x75, x76, x77) :|: x77 <= x76 6.73/2.59 f16(x61, x62, x63, x64) -> f6(x61, x62, x63, x64) :|: TRUE 6.73/2.59 f5(x65, x66, x67, x68) -> f6(x65, x66, x67, x68) :|: TRUE 6.73/2.59 Start term: f1(i, j, m, n) 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (3) TerminationGraphProcessor (SOUND) 6.73/2.59 Constructed the termination graph and obtained one non-trivial SCC. 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (4) 6.73/2.59 Obligation: 6.73/2.59 Rules: 6.73/2.59 f8(x41, x42, x43, x44) -> f9(x41, x42, x43, x44) :|: x41 < x44 6.73/2.59 f12(x45, x46, x47, x48) -> f8(x45, x46, x47, x48) :|: TRUE 6.73/2.59 f13(x33, x34, x35, x36) -> f12(x33, x34, x35, x36) :|: TRUE 6.73/2.59 f10(x13, x14, x15, x16) -> f13(x13, arith, x15, x16) :|: TRUE && arith = x14 + 1 6.73/2.59 f9(x25, x26, x27, x28) -> f10(x25, x26, x27, x28) :|: x26 < x27 6.73/2.59 f15(x37, x38, x39, x40) -> f12(x37, x38, x39, x40) :|: TRUE 6.73/2.59 f14(x69, x70, x71, x72) -> f15(x73, x70, x71, x72) :|: TRUE && x73 = x69 + 1 6.73/2.59 f11(x17, x18, x19, x20) -> f14(x17, 0, x19, x20) :|: TRUE 6.73/2.59 f9(x29, x30, x31, x32) -> f11(x29, x30, x31, x32) :|: x30 >= x31 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (5) IntTRSCompressionProof (EQUIVALENT) 6.73/2.59 Compressed rules. 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (6) 6.73/2.59 Obligation: 6.73/2.59 Rules: 6.73/2.59 f12(x45:0, x46:0, x47:0, x48:0) -> f12(x45:0, x46:0 + 1, x47:0, x48:0) :|: x48:0 > x45:0 && x47:0 > x46:0 6.73/2.59 f12(x, x1, x2, x3) -> f12(x + 1, 0, x2, x3) :|: x3 > x && x2 <= x1 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (7) PolynomialOrderProcessor (EQUIVALENT) 6.73/2.59 Found the following polynomial interpretation: 6.73/2.59 [f12(x, x1, x2, x3)] = -x + x3 6.73/2.59 6.73/2.59 The following rules are decreasing: 6.73/2.59 f12(x, x1, x2, x3) -> f12(x + 1, 0, x2, x3) :|: x3 > x && x2 <= x1 6.73/2.59 The following rules are bounded: 6.73/2.59 f12(x45:0, x46:0, x47:0, x48:0) -> f12(x45:0, x46:0 + 1, x47:0, x48:0) :|: x48:0 > x45:0 && x47:0 > x46:0 6.73/2.59 f12(x, x1, x2, x3) -> f12(x + 1, 0, x2, x3) :|: x3 > x && x2 <= x1 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (8) 6.73/2.59 Obligation: 6.73/2.59 Rules: 6.73/2.59 f12(x45:0, x46:0, x47:0, x48:0) -> f12(x45:0, x46:0 + 1, x47:0, x48:0) :|: x48:0 > x45:0 && x47:0 > x46:0 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (9) PolynomialOrderProcessor (EQUIVALENT) 6.73/2.59 Found the following polynomial interpretation: 6.73/2.59 [f12(x, x1, x2, x3)] = -x1 + x2 6.73/2.59 6.73/2.59 The following rules are decreasing: 6.73/2.59 f12(x45:0, x46:0, x47:0, x48:0) -> f12(x45:0, x46:0 + 1, x47:0, x48:0) :|: x48:0 > x45:0 && x47:0 > x46:0 6.73/2.59 The following rules are bounded: 6.73/2.59 f12(x45:0, x46:0, x47:0, x48:0) -> f12(x45:0, x46:0 + 1, x47:0, x48:0) :|: x48:0 > x45:0 && x47:0 > x46:0 6.73/2.59 6.73/2.59 ---------------------------------------- 6.73/2.59 6.73/2.59 (10) 6.73/2.59 YES 6.89/2.62 EOF