18.72/6.24 YES 18.72/6.25 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 18.72/6.25 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 18.72/6.25 18.72/6.25 18.72/6.25 Termination of the given C Problem could be proven: 18.72/6.25 18.72/6.25 (0) C Problem 18.72/6.25 (1) CToLLVMProof [EQUIVALENT, 170 ms] 18.72/6.25 (2) LLVM problem 18.72/6.25 (3) LLVMToTerminationGraphProof [EQUIVALENT, 2869 ms] 18.72/6.25 (4) LLVM Symbolic Execution Graph 18.72/6.25 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 18.72/6.25 (6) LLVM Symbolic Execution SCC 18.72/6.25 (7) SCC2IRS [SOUND, 139 ms] 18.72/6.25 (8) IntTRS 18.72/6.25 (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] 18.72/6.25 (10) IntTRS 18.72/6.25 (11) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] 18.72/6.25 (12) IntTRS 18.72/6.25 (13) RankingReductionPairProof [EQUIVALENT, 24 ms] 18.72/6.25 (14) YES 18.72/6.25 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (0) 18.72/6.25 Obligation: 18.72/6.25 c file /export/starexec/sandbox/benchmark/theBenchmark.c 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (1) CToLLVMProof (EQUIVALENT) 18.72/6.25 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (2) 18.72/6.25 Obligation: 18.72/6.25 LLVM Problem 18.72/6.25 18.72/6.25 Aliases: 18.72/6.25 18.72/6.25 Data layout: 18.72/6.25 18.72/6.25 "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 18.72/6.25 18.72/6.25 Machine: 18.72/6.25 18.72/6.25 "x86_64-pc-linux-gnu" 18.72/6.25 18.72/6.25 Type definitions: 18.72/6.25 18.72/6.25 Global variables: 18.72/6.25 18.72/6.25 Function declarations and definitions: 18.72/6.25 18.72/6.25 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 18.72/6.25 *BasicFunctionTypename: "cstrchr" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: (s *i8, c i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 18.72/6.25 0: 18.72/6.25 %1 = alloca *i8, align 8 18.72/6.25 %2 = alloca i32, align 4 18.72/6.25 store %s, %1 18.72/6.25 store %c, %2 18.72/6.25 br %3 18.72/6.25 3: 18.72/6.25 %4 = load %1 18.72/6.25 %5 = load %4 18.72/6.25 %6 = sext i8 %5 to i32 18.72/6.25 %7 = icmp ne %6 0 18.72/6.25 br %7, %8, %16 18.72/6.25 8: 18.72/6.25 %9 = load %1 18.72/6.25 %10 = load %9 18.72/6.25 %11 = sext i8 %10 to i32 18.72/6.25 %12 = load %2 18.72/6.25 %13 = trunc i32 %12 to i8 18.72/6.25 %14 = sext i8 %13 to i32 18.72/6.25 %15 = icmp ne %11 %14 18.72/6.25 br %16 18.72/6.25 16: 18.72/6.25 %17 = phi [0, %3], [%15, %8] 18.72/6.25 br %17, %18, %21 18.72/6.25 18: 18.72/6.25 %19 = load %1 18.72/6.25 %20 = getelementptr %19, 1 18.72/6.25 store %20, %1 18.72/6.25 br %3 18.72/6.25 21: 18.72/6.25 %22 = load %1 18.72/6.25 %23 = load %22 18.72/6.25 %24 = sext i8 %23 to i32 18.72/6.25 %25 = load %2 18.72/6.25 %26 = icmp eq %24 %25 18.72/6.25 br %26, %27, %29 18.72/6.25 27: 18.72/6.25 %28 = load %1 18.72/6.25 br %30 18.72/6.25 29: 18.72/6.25 br %30 18.72/6.25 30: 18.72/6.25 %31 = phi [%28, %27], [null, %29] 18.72/6.25 ret %31 18.72/6.25 18.72/6.25 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 18.72/6.25 0: 18.72/6.25 %1 = alloca i32, align 4 18.72/6.25 %length = alloca i32, align 4 18.72/6.25 %nondetString = alloca *i8, align 8 18.72/6.25 store 0, %1 18.72/6.25 %2 = call i32 @__VERIFIER_nondet_int() 18.72/6.25 store %2, %length 18.72/6.25 %3 = load %length 18.72/6.25 %4 = icmp slt %3 1 18.72/6.25 br %4, %5, %6 18.72/6.25 5: 18.72/6.25 store 1, %length 18.72/6.25 br %6 18.72/6.25 6: 18.72/6.25 %7 = load %length 18.72/6.25 %8 = sext i32 %7 to i64 18.72/6.25 %9 = mul %8 1 18.72/6.25 %10 = alloca i8, numElementsLit: %9 18.72/6.25 store %10, %nondetString 18.72/6.25 %11 = load %length 18.72/6.25 %12 = sub %11 1 18.72/6.25 %13 = sext i32 %12 to i64 18.72/6.25 %14 = load %nondetString 18.72/6.25 %15 = getelementptr %14, %13 18.72/6.25 store 0, %15 18.72/6.25 %16 = load %nondetString 18.72/6.25 %17 = call i32 @__VERIFIER_nondet_int() 18.72/6.25 %18 = call *i8 @cstrchr(*i8 %16, i32 %17) 18.72/6.25 ret 0 18.72/6.25 18.72/6.25 18.72/6.25 Analyze Termination of all function calls matching the pattern: 18.72/6.25 main() 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (3) LLVMToTerminationGraphProof (EQUIVALENT) 18.72/6.25 Constructed symbolic execution graph for LLVM program and proved memory safety. 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (4) 18.72/6.25 Obligation: 18.72/6.25 SE Graph 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (5) SymbolicExecutionGraphToSCCProof (SOUND) 18.72/6.25 Splitted symbolic execution graph to 1 SCC. 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (6) 18.72/6.25 Obligation: 18.72/6.25 SCC 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (7) SCC2IRS (SOUND) 18.72/6.25 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 18.72/6.25 Generated rules. Obtained 21 rulesP rules: 18.72/6.25 f_470(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_472(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_472(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_474(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_474(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_476(v582, v583, v584, v585, v662, v673, 1, v587, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_476(v582, v583, v584, v585, v662, v673, 1, v587, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_477(v582, v583, v584, v585, v662, v673, 1, v587, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_477(v582, v583, v584, v585, v662, v673, 1, v587, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_478(v582, v583, v584, v585, v662, v673, 1, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_478(v582, v583, v584, v585, v662, v673, 1, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_479(v582, v583, v584, v585, v662, v673, 1, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_479(v582, v583, v584, v585, v662, v673, 1, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_480(v582, v583, v584, v585, v662, v673, 1, v734, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_480(v582, v583, v584, v585, v662, v673, 1, v734, v589, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_481(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_481(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_482(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: v673 != v734 18.72/6.25 f_482(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_484(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_484(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_486(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_486(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_456(v582, v583, v584, v585, v662, v673, 1, v734, v586, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v587, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_456(v582, v583, v584, v585, v586, v587, 1, v589, v590, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_459(v582, v583, v584, v585, v586, v587, 1, v589, v590, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_459(v582, v583, v584, v585, v586, v587, 1, v589, v590, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_462(v582, v583, v584, v585, v586, v587, 1, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_462(v582, v583, v584, v585, v586, v587, 1, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_464(v582, v583, v584, v585, v586, v587, 1, v589, v662, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: v662 = 1 + v586 && 3 <= v662 18.72/6.25 f_464(v582, v583, v584, v585, v586, v587, 1, v589, v662, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_465(v582, v583, v584, v585, v586, v587, 1, v589, v662, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_465(v582, v583, v584, v585, v586, v587, 1, v589, v662, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_466(v582, v583, v584, v585, v586, v587, 1, v589, v662, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_466(v582, v583, v584, v585, v586, v587, 1, v589, v662, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_467(v582, v583, v584, v585, v662, v587, 1, v586, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_467(v582, v583, v584, v585, v662, v587, 1, v586, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_468(v582, v583, v584, v585, v662, v673, v587, 1, v586, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: TRUE 18.72/6.25 f_468(v582, v583, v584, v585, v662, v673, v587, 1, v586, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_469(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: 0 = 0 18.72/6.25 f_469(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) -> f_470(v582, v583, v584, v585, v662, v673, 1, v586, v587, v589, v591, v598, v592, v599, v593, v600, v597, v601, v602, v603, v590, v604, 0, v594, v596, 3, 7, 2, 4, 8) :|: v673 != 0 && v662 < v597 && 4 <= v597 18.72/6.25 Combined rules. Obtained 4 rulesP rules: 18.72/6.25 f_470(v582:0, v583:0, v584:0, v585:0, v662:0, v673:0, 1, v586:0, v587:0, v589:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v590:0, v604:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) -> f_470(v582:0, v583:0, v584:0, v585:0, 1 + v662:0, v673:1, 1, v662:0, v673:0, v734:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v586:0, v587:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) :|: v734:0 > v673:0 && v662:0 > 1 && v597:0 > 1 + v662:0 && v597:0 > 3 && v673:1 < 0 18.72/6.25 f_470(v582:0, v583:0, v584:0, v585:0, v662:0, v673:0, 1, v586:0, v587:0, v589:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v590:0, v604:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) -> f_470(v582:0, v583:0, v584:0, v585:0, 1 + v662:0, v673:1, 1, v662:0, v673:0, v734:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v586:0, v587:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) :|: v734:0 > v673:0 && v662:0 > 1 && v597:0 > 1 + v662:0 && v597:0 > 3 && v673:1 > 0 18.72/6.25 f_470(v582:0, v583:0, v584:0, v585:0, v662:0, v673:0, 1, v586:0, v587:0, v589:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v590:0, v604:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) -> f_470(v582:0, v583:0, v584:0, v585:0, 1 + v662:0, v673:1, 1, v662:0, v673:0, v734:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v586:0, v587:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) :|: v734:0 < v673:0 && v662:0 > 1 && v597:0 > 1 + v662:0 && v597:0 > 3 && v673:1 < 0 18.72/6.25 f_470(v582:0, v583:0, v584:0, v585:0, v662:0, v673:0, 1, v586:0, v587:0, v589:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v590:0, v604:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) -> f_470(v582:0, v583:0, v584:0, v585:0, 1 + v662:0, v673:1, 1, v662:0, v673:0, v734:0, v591:0, v598:0, v592:0, v599:0, v593:0, v600:0, v597:0, v601:0, v602:0, v603:0, v586:0, v587:0, 0, v594:0, v596:0, 3, 7, 2, 4, 8) :|: v734:0 < v673:0 && v662:0 > 1 && v597:0 > 1 + v662:0 && v597:0 > 3 && v673:1 > 0 18.72/6.25 Filtered unneeded arguments: 18.72/6.25 f_470(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30) -> f_470(x5, x6, x17) 18.72/6.25 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 18.72/6.25 f_470(v662:0, v673:0, v597:0) -> f_470(1 + v662:0, v673:1, v597:0) :|: v597:0 > 1 + v662:0 && v662:0 > 1 && v673:1 < 0 && v597:0 > 3 18.72/6.25 f_470(v662:0, v673:0, v597:0) -> f_470(1 + v662:0, v673:1, v597:0) :|: v597:0 > 1 + v662:0 && v662:0 > 1 && v673:1 > 0 && v597:0 > 3 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (8) 18.72/6.25 Obligation: 18.72/6.25 Rules: 18.72/6.25 f_470(v662:0, v673:0, v597:0) -> f_470(1 + v662:0, v673:1, v597:0) :|: v597:0 > 1 + v662:0 && v662:0 > 1 && v673:1 < 0 && v597:0 > 3 18.72/6.25 f_470(x, x1, x2) -> f_470(1 + x, x3, x2) :|: x2 > 1 + x && x > 1 && x3 > 0 && x2 > 3 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (9) IntTRSCompressionProof (EQUIVALENT) 18.72/6.25 Compressed rules. 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (10) 18.72/6.25 Obligation: 18.72/6.25 Rules: 18.72/6.25 f_470(x:0, x1:0, x2:0) -> f_470(1 + x:0, x3:0, x2:0) :|: x3:0 > 0 && x2:0 > 3 && x:0 > 1 && x2:0 > 1 + x:0 18.72/6.25 f_470(v662:0:0, v673:0:0, v597:0:0) -> f_470(1 + v662:0:0, v673:1:0, v597:0:0) :|: v673:1:0 < 0 && v597:0:0 > 3 && v662:0:0 > 1 && v597:0:0 > 1 + v662:0:0 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (11) IntTRSUnneededArgumentFilterProof (EQUIVALENT) 18.72/6.25 Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: 18.72/6.25 18.72/6.25 f_470(x1, x2, x3) -> f_470(x1, x3) 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (12) 18.72/6.25 Obligation: 18.72/6.25 Rules: 18.72/6.25 f_470(x:0, x2:0) -> f_470(1 + x:0, x2:0) :|: x3:0 > 0 && x2:0 > 3 && x:0 > 1 && x2:0 > 1 + x:0 18.72/6.25 f_470(v662:0:0, v597:0:0) -> f_470(1 + v662:0:0, v597:0:0) :|: v673:1:0 < 0 && v597:0:0 > 3 && v662:0:0 > 1 && v597:0:0 > 1 + v662:0:0 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (13) RankingReductionPairProof (EQUIVALENT) 18.72/6.25 Interpretation: 18.72/6.25 [ f_470 ] = f_470_2 + -1*f_470_1 18.72/6.25 18.72/6.25 The following rules are decreasing: 18.72/6.25 f_470(x:0, x2:0) -> f_470(1 + x:0, x2:0) :|: x3:0 > 0 && x2:0 > 3 && x:0 > 1 && x2:0 > 1 + x:0 18.72/6.25 f_470(v662:0:0, v597:0:0) -> f_470(1 + v662:0:0, v597:0:0) :|: v673:1:0 < 0 && v597:0:0 > 3 && v662:0:0 > 1 && v597:0:0 > 1 + v662:0:0 18.72/6.25 18.72/6.25 The following rules are bounded: 18.72/6.25 f_470(x:0, x2:0) -> f_470(1 + x:0, x2:0) :|: x3:0 > 0 && x2:0 > 3 && x:0 > 1 && x2:0 > 1 + x:0 18.72/6.25 f_470(v662:0:0, v597:0:0) -> f_470(1 + v662:0:0, v597:0:0) :|: v673:1:0 < 0 && v597:0:0 > 3 && v662:0:0 > 1 && v597:0:0 > 1 + v662:0:0 18.72/6.25 18.72/6.25 18.72/6.25 ---------------------------------------- 18.72/6.25 18.72/6.25 (14) 18.72/6.25 YES 18.78/6.29 EOF