4.95/2.14 YES 4.95/2.16 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 4.95/2.16 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.95/2.16 4.95/2.16 4.95/2.16 Termination of the given C Problem could be proven: 4.95/2.16 4.95/2.16 (0) C Problem 4.95/2.16 (1) CToIRSProof [EQUIVALENT, 0 ms] 4.95/2.16 (2) IntTRS 4.95/2.16 (3) TerminationGraphProcessor [SOUND, 49 ms] 4.95/2.16 (4) IntTRS 4.95/2.16 (5) IntTRSCompressionProof [EQUIVALENT, 41 ms] 4.95/2.16 (6) IntTRS 4.95/2.16 (7) RankingReductionPairProof [EQUIVALENT, 29 ms] 4.95/2.16 (8) YES 4.95/2.16 4.95/2.16 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (0) 4.95/2.16 Obligation: 4.95/2.16 c file /export/starexec/sandbox/benchmark/theBenchmark.c 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (1) CToIRSProof (EQUIVALENT) 4.95/2.16 Parsed C Integer Program as IRS. 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (2) 4.95/2.16 Obligation: 4.95/2.16 Rules: 4.95/2.16 f1(x, y) -> f2(x_1, y) :|: TRUE 4.95/2.16 f2(x1, x2) -> f3(x1, x3) :|: TRUE 4.95/2.16 f5(x4, x5) -> f6(arith, x5) :|: TRUE && arith = x4 - 1 4.95/2.16 f6(x20, x21) -> f7(x20, x22) :|: TRUE && x22 = x21 - 1 4.95/2.16 f4(x8, x9) -> f5(x8, x9) :|: x9 > 0 4.95/2.16 f7(x10, x11) -> f4(x10, x11) :|: TRUE 4.95/2.16 f4(x12, x13) -> f8(x12, x13) :|: x13 <= 0 4.95/2.16 f3(x14, x15) -> f4(x14, x15) :|: x14 = x15 && x14 > 0 4.95/2.16 f8(x16, x17) -> f3(x16, x17) :|: TRUE 4.95/2.16 f3(x18, x19) -> f9(x18, x19) :|: x18 <= 0 4.95/2.16 f3(x23, x24) -> f9(x23, x24) :|: x23 < x24 4.95/2.16 f3(x25, x26) -> f9(x25, x26) :|: x25 > x26 4.95/2.16 Start term: f1(x, y) 4.95/2.16 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (3) TerminationGraphProcessor (SOUND) 4.95/2.16 Constructed the termination graph and obtained one non-trivial SCC. 4.95/2.16 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (4) 4.95/2.16 Obligation: 4.95/2.16 Rules: 4.95/2.16 f3(x14, x15) -> f4(x14, x15) :|: x14 = x15 && x14 > 0 4.95/2.16 f8(x16, x17) -> f3(x16, x17) :|: TRUE 4.95/2.16 f4(x12, x13) -> f8(x12, x13) :|: x13 <= 0 4.95/2.16 f7(x10, x11) -> f4(x10, x11) :|: TRUE 4.95/2.16 f6(x20, x21) -> f7(x20, x22) :|: TRUE && x22 = x21 - 1 4.95/2.16 f5(x4, x5) -> f6(arith, x5) :|: TRUE && arith = x4 - 1 4.95/2.16 f4(x8, x9) -> f5(x8, x9) :|: x9 > 0 4.95/2.16 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (5) IntTRSCompressionProof (EQUIVALENT) 4.95/2.16 Compressed rules. 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (6) 4.95/2.16 Obligation: 4.95/2.16 Rules: 4.95/2.16 f4(x8:0, x9:0) -> f4(x8:0 - 1, x9:0 - 1) :|: x9:0 > 0 4.95/2.16 f4(x12:0, x12:01) -> f4(x12:0, x12:0) :|: x12:0 < 1 && x12:0 > 0 && x12:0 = x12:01 4.95/2.16 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (7) RankingReductionPairProof (EQUIVALENT) 4.95/2.16 Interpretation: 4.95/2.16 [ f4 ] = f4_2 4.95/2.16 4.95/2.16 The following rules are decreasing: 4.95/2.16 f4(x8:0, x9:0) -> f4(x8:0 - 1, x9:0 - 1) :|: x9:0 > 0 4.95/2.16 f4(x12:0, x12:01) -> f4(x12:0, x12:0) :|: x12:0 < 1 && x12:0 > 0 && x12:0 = x12:01 4.95/2.16 4.95/2.16 The following rules are bounded: 4.95/2.16 f4(x8:0, x9:0) -> f4(x8:0 - 1, x9:0 - 1) :|: x9:0 > 0 4.95/2.16 f4(x12:0, x12:01) -> f4(x12:0, x12:0) :|: x12:0 < 1 && x12:0 > 0 && x12:0 = x12:01 4.95/2.16 4.95/2.16 4.95/2.16 ---------------------------------------- 4.95/2.16 4.95/2.16 (8) 4.95/2.16 YES 4.95/2.19 EOF