19.61/6.32 YES 19.61/6.33 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 19.61/6.33 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 19.61/6.33 19.61/6.33 19.61/6.33 Termination of the given C Problem could be proven: 19.61/6.33 19.61/6.33 (0) C Problem 19.61/6.33 (1) CToLLVMProof [EQUIVALENT, 175 ms] 19.61/6.33 (2) LLVM problem 19.61/6.33 (3) LLVMToTerminationGraphProof [EQUIVALENT, 2409 ms] 19.61/6.33 (4) LLVM Symbolic Execution Graph 19.61/6.33 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 19.61/6.33 (6) LLVM Symbolic Execution SCC 19.61/6.33 (7) SCC2IRS [SOUND, 170 ms] 19.61/6.33 (8) IntTRS 19.61/6.33 (9) IntTRSCompressionProof [EQUIVALENT, 3 ms] 19.61/6.33 (10) IntTRS 19.61/6.33 (11) RankingReductionPairProof [EQUIVALENT, 19 ms] 19.61/6.33 (12) IntTRS 19.61/6.33 (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] 19.61/6.33 (14) IntTRS 19.61/6.33 (15) RankingReductionPairProof [EQUIVALENT, 4 ms] 19.61/6.33 (16) YES 19.61/6.33 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (0) 19.61/6.33 Obligation: 19.61/6.33 c file /export/starexec/sandbox/benchmark/theBenchmark.c 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (1) CToLLVMProof (EQUIVALENT) 19.61/6.33 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (2) 19.61/6.33 Obligation: 19.61/6.33 LLVM Problem 19.61/6.33 19.61/6.33 Aliases: 19.61/6.33 19.61/6.33 Data layout: 19.61/6.33 19.61/6.33 "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" 19.61/6.33 19.61/6.33 Machine: 19.61/6.33 19.61/6.33 "x86_64-pc-linux-gnu" 19.61/6.33 19.61/6.33 Type definitions: 19.61/6.33 19.61/6.33 Global variables: 19.61/6.33 19.61/6.33 Function declarations and definitions: 19.61/6.33 19.61/6.33 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 19.61/6.33 *BasicFunctionTypename: "f" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (x i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 19.61/6.33 0: 19.61/6.33 %1 = alloca i32, align 4 19.61/6.33 %2 = alloca i32, align 4 19.61/6.33 store %x, %2 19.61/6.33 %3 = load %2 19.61/6.33 %4 = icmp sle %3 0 19.61/6.33 br %4, %5, %6 19.61/6.33 5: 19.61/6.33 store 0, %1 19.61/6.33 br %13 19.61/6.33 6: 19.61/6.33 %7 = load %2 19.61/6.33 %8 = call i32 (...)* @g(i32 %7) 19.61/6.33 %9 = load %2 19.61/6.33 %10 = add %9 1 19.61/6.33 %11 = call i32 (...)* @g(i32 %10) 19.61/6.33 %12 = add %8 %11 19.61/6.33 store %12, %1 19.61/6.33 br %13 19.61/6.33 13: 19.61/6.33 %14 = load %1 19.61/6.33 ret %14 19.61/6.33 19.61/6.33 *BasicFunctionTypename: "g" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (x i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 19.61/6.33 0: 19.61/6.33 %1 = alloca i32, align 4 19.61/6.33 %2 = alloca i32, align 4 19.61/6.33 store %x, %2 19.61/6.33 %3 = load %2 19.61/6.33 %4 = icmp sle %3 0 19.61/6.33 br %4, %5, %6 19.61/6.33 5: 19.61/6.33 store 0, %1 19.61/6.33 br %14 19.61/6.33 6: 19.61/6.33 %7 = load %2 19.61/6.33 %8 = sub %7 2 19.61/6.33 %9 = call i32 @f(i32 %8) 19.61/6.33 %10 = load %2 19.61/6.33 %11 = sub %10 3 19.61/6.33 %12 = call i32 @f(i32 %11) 19.61/6.33 %13 = add %9 %12 19.61/6.33 store %13, %1 19.61/6.33 br %14 19.61/6.33 14: 19.61/6.33 %15 = load %1 19.61/6.33 ret %15 19.61/6.33 19.61/6.33 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 19.61/6.33 0: 19.61/6.33 %1 = alloca i32, align 4 19.61/6.33 %x = alloca i32, align 4 19.61/6.33 store 0, %1 19.61/6.33 %2 = call i32 (...)* @__VERIFIER_nondet_int() 19.61/6.33 store %2, %x 19.61/6.33 %3 = load %x 19.61/6.33 %4 = call i32 @g(i32 %3) 19.61/6.33 %5 = load %1 19.61/6.33 ret %5 19.61/6.33 19.61/6.33 19.61/6.33 Analyze Termination of all function calls matching the pattern: 19.61/6.33 main() 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (3) LLVMToTerminationGraphProof (EQUIVALENT) 19.61/6.33 Constructed symbolic execution graph for LLVM program and proved memory safety. 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (4) 19.61/6.33 Obligation: 19.61/6.33 SE Graph 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (5) SymbolicExecutionGraphToSCCProof (SOUND) 19.61/6.33 Splitted symbolic execution graph to 1 SCC. 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (6) 19.61/6.33 Obligation: 19.61/6.33 SCC 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (7) SCC2IRS (SOUND) 19.61/6.33 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 19.61/6.33 Generated rules. Obtained 74 rulesP rules: 19.61/6.33 f_293(v177, v178, v179, 3, 1, 4) -> f_294(v177, v178, v180, v179, v181, 3, 1, 4) :|: 1 <= v180 && v181 = 3 + v180 && 4 <= v181 19.61/6.33 f_294(v177, v178, v180, v179, v181, 3, 1, 4) -> f_295(v177, v178, v180, v179, v181, 3, 1, 4) :|: TRUE 19.61/6.33 f_295(v177, v178, v180, v179, v181, 3, 1, 4) -> f_296(v177, v178, v180, v179, v181, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_296(v177, v178, v180, v179, v181, 3, 1, 4) -> f_298(v177, v178, v180, v179, v181, 3, 1, 4) :|: 0 < v177 19.61/6.33 f_298(v177, v178, v180, v179, v181, 3, 1, 4) -> f_300(v177, v178, v180, 0, v179, v181, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_300(v177, v178, v180, 0, v179, v181, 3, 1, 4) -> f_302(v177, v178, v180, 0, v179, v181, 3, 1, 4) :|: TRUE 19.61/6.33 f_302(v177, v178, v180, 0, v179, v181, 3, 1, 4) -> f_304(v177, v178, v180, 0, v179, v181, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_304(v177, v178, v180, 0, v179, v181, 3, 1, 4) -> f_306(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 2 + v183 = v177 && 0 <= 1 + v183 19.61/6.33 f_306(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) -> f_310(v183, v178, v179, v180, v181, v177, 3, 2, 1, 4, 0) :|: TRUE 19.61/6.33 f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) -> f_377(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) -> f_484(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) -> f_497(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) -> f_530(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 f_308(v183, v178, v179, v180, v181, v177, 0, 3, 2, 1, 4) -> f_553(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 f_310(v183, v178, v179, v180, v181, v177, 3, 2, 1, 4, 0) -> f_336(v183, v178, v179, v180, v181, v177, 3, 2, 0, 1, 4) :|: TRUE 19.61/6.33 f_336(v211, v212, v213, v214, v215, v216, 3, 2, 0, 1, 4) -> f_360(v211, 0, 2) :|: TRUE 19.61/6.33 f_360(v239, 0, 2) -> f_361(v239, v240, v241, 3, 0, 2, 1, 4) :|: 1 <= v240 && v241 = 3 + v240 && 4 <= v241 19.61/6.33 f_361(v239, v240, v241, 3, 0, 2, 1, 4) -> f_362(v239, v240, v242, v241, v243, 3, 0, 2, 1, 4) :|: 1 <= v242 && v243 = 3 + v242 && 4 <= v243 19.61/6.33 f_362(v239, v240, v242, v241, v243, 3, 0, 2, 1, 4) -> f_363(v239, v240, v242, v241, v243, 3, 0, 2, 1, 4) :|: TRUE 19.61/6.33 f_363(v239, v240, v242, v241, v243, 3, 0, 2, 1, 4) -> f_364(v239, v240, v242, v241, v243, 3, 0, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_364(v239, v240, v242, v241, v243, 3, 0, 2, 1, 4) -> f_366(v239, v240, v242, v241, v243, 3, 1, 4) :|: 0 < v239 19.61/6.33 f_366(v239, v240, v242, v241, v243, 3, 1, 4) -> f_368(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_368(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_370(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_370(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_372(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_372(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) -> f_376(v239, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) -> f_435(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) -> f_470(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) -> f_512(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) -> f_548(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_374(v239, v240, v241, v242, v243, 0, 3, 1, 4) -> f_567(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_376(v239, v240, v241, v242, v243, 3, 1, 4) -> f_291(v239) :|: TRUE 19.61/6.33 f_291(v177) -> f_293(v177, v178, v179, 3, 1, 4) :|: 1 <= v178 && v179 = 3 + v178 && 4 <= v179 19.61/6.33 f_435(v239, 0, v240, v241, v242, v243, 3, 1, 4) -> f_437(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_437(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_439(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_439(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_440(v239, v240, v242, 0, v348, v241, v243, 3, 1, 4, 2) :|: v348 = 1 + v239 && 2 <= v348 19.61/6.33 f_440(v239, v240, v242, 0, v348, v241, v243, 3, 1, 4, 2) -> f_441(v348, v240, v241, v242, v243, v239, 0, 3, 1, 4, 2) :|: 0 = 0 19.61/6.33 f_441(v348, v240, v241, v242, v243, v239, 0, 3, 1, 4, 2) -> f_442(v348, v240, v241, v242, v243, v239, 3, 1, 4, 2) :|: TRUE 19.61/6.33 f_442(v348, v240, v241, v242, v243, v239, 3, 1, 4, 2) -> f_291(v348) :|: TRUE 19.61/6.33 f_470(v239, 0, v240, v241, v242, v243, 3, 1, 4) -> f_473(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_473(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_476(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_476(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_478(v239, v240, v242, 0, v424, v241, v243, 3, 1, 4, 2) :|: v424 = 1 + v239 && 2 <= v424 19.61/6.33 f_478(v239, v240, v242, 0, v424, v241, v243, 3, 1, 4, 2) -> f_480(v424, v240, v241, v242, v243, v239, 0, 3, 1, 4, 2) :|: 0 = 0 19.61/6.33 f_480(v424, v240, v241, v242, v243, v239, 0, 3, 1, 4, 2) -> f_482(v424, v240, v241, v242, v243, v239, 3, 1, 4, 2) :|: TRUE 19.61/6.33 f_482(v424, v240, v241, v242, v243, v239, 3, 1, 4, 2) -> f_291(v424) :|: TRUE 19.61/6.33 f_512(v239, 0, v240, v241, v242, v243, 3, 1, 4) -> f_516(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_516(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_520(v239, v240, v242, 0, v241, v243, 3, 1, 4) :|: 0 = 0 19.61/6.33 f_520(v239, v240, v242, 0, v241, v243, 3, 1, 4) -> f_523(v239, v240, v242, 0, v520, v241, v243, 3, 1, 4, 2) :|: v520 = 1 + v239 && 2 <= v520 19.61/6.33 f_523(v239, v240, v242, 0, v520, v241, v243, 3, 1, 4, 2) -> f_526(v520, v240, v241, v242, v243, v239, 0, 3, 1, 4, 2) :|: 0 = 0 19.61/6.33 f_526(v520, v240, v241, v242, v243, v239, 0, 3, 1, 4, 2) -> f_529(v520, v240, v241, v242, v243, v239, 3, 1, 4, 2) :|: TRUE 19.61/6.33 f_529(v520, v240, v241, v242, v243, v239, 3, 1, 4, 2) -> f_291(v520) :|: TRUE 19.61/6.33 f_548(v239, 0, v240, v241, v242, v243, 3, 1, 4) -> f_512(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_567(v239, 0, v240, v241, v242, v243, 3, 1, 4) -> f_548(v239, 0, v240, v241, v242, v243, 3, 1, 4) :|: TRUE 19.61/6.33 f_377(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) -> f_378(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_378(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_380(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_380(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_381(v177, v178, v180, 0, v183, v256, v179, v181, 3, 2, 1, 4) :|: 3 + v256 = v177 && 0 <= 2 + v256 && 1 + v256 <= 0 19.61/6.33 f_381(v177, v178, v180, 0, v183, v256, v179, v181, 3, 2, 1, 4) -> f_382(v256, v178, v179, v180, v181, v177, 0, v183, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_382(v256, v178, v179, v180, v181, v177, 0, v183, 3, 2, 1, 4) -> f_383(v256, v178, v179, v180, v181, v177, 3, 1, 2, 4, 0) :|: TRUE 19.61/6.33 f_383(v256, v178, v179, v180, v181, v177, 3, 1, 2, 4, 0) -> f_360(v256, 0, 2) :|: TRUE 19.61/6.33 f_484(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) -> f_488(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_488(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_490(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_490(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_492(v177, v178, v180, 0, v183, v450, v179, v181, 3, 2, 1, 4) :|: 3 + v450 = v177 && 0 <= v450 19.61/6.33 f_492(v177, v178, v180, 0, v183, v450, v179, v181, 3, 2, 1, 4) -> f_494(v450, v178, v179, v180, v181, v177, 0, v183, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_494(v450, v178, v179, v180, v181, v177, 0, v183, 3, 2, 1, 4) -> f_496(v450, v178, v179, v180, v181, v177, 3, 1, 4, 0) :|: TRUE 19.61/6.33 f_496(v450, v178, v179, v180, v181, v177, 3, 1, 4, 0) -> f_360(v450, 0, 2) :|: TRUE 19.61/6.33 f_497(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) -> f_484(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 f_530(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) -> f_533(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_533(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_537(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_537(v177, v178, v180, 0, v183, v179, v181, 3, 2, 1, 4) -> f_540(v177, v178, v180, 0, v183, v566, v179, v181, 3, 2, 1, 4) :|: 3 + v566 = v177 && 0 <= v566 19.61/6.33 f_540(v177, v178, v180, 0, v183, v566, v179, v181, 3, 2, 1, 4) -> f_543(v566, v178, v179, v180, v181, v177, 0, v183, 3, 2, 1, 4) :|: 0 = 0 19.61/6.33 f_543(v566, v178, v179, v180, v181, v177, 0, v183, 3, 2, 1, 4) -> f_546(v566, v178, v179, v180, v181, v177, 3, 1, 4, 0) :|: TRUE 19.61/6.33 f_546(v566, v178, v179, v180, v181, v177, 3, 1, 4, 0) -> f_360(v566, 0, 2) :|: TRUE 19.61/6.33 f_553(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) -> f_530(v183, 0, v178, v179, v180, v181, v177, 3, 2, 1, 4) :|: TRUE 19.61/6.33 Combined rules. Obtained 4 rulesP rules: 19.61/6.33 f_374(v239:0, v240:0, v241:0, v242:0, v243:0, 0, 3, 1, 4) -> f_293(1 + v239:0, v178:0, 3 + v178:0, 3, 1, 4) :|: v239:0 > 0 && v178:0 > 0 19.61/6.33 f_293(3 + v450:0, v178:0, v179:0, 3, 1, 4) -> f_374(v450:0, v240:0, 3 + v240:0, v242:0, 3 + v242:0, 0, 3, 1, 4) :|: v450:0 > 0 && v180:0 > 0 && v240:0 > 0 && v242:0 > 0 && 3 + v450:0 = 2 + v183:0 && v183:0 > -2 19.61/6.33 f_374(v239:0, v240:0, v241:0, v242:0, v243:0, 0, 3, 1, 4) -> f_293(v239:0, v178:0, 3 + v178:0, 3, 1, 4) :|: v178:0 > 0 19.61/6.33 f_293(2 + v183:0, v178:0, v179:0, 3, 1, 4) -> f_374(v183:0, v240:0, 3 + v240:0, v242:0, 3 + v242:0, 0, 3, 1, 4) :|: v183:0 > 0 && v180:0 > 0 && v240:0 > 0 && v242:0 > 0 19.61/6.33 Filtered unneeded arguments: 19.61/6.33 f_374(x1, x2, x3, x4, x5, x6, x7, x8, x9) -> f_374(x1) 19.61/6.33 f_293(x1, x2, x3, x4, x5, x6) -> f_293(x1) 19.61/6.33 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 19.61/6.33 f_374(v239:0) -> f_293(1 + v239:0) :|: v239:0 > 0 19.61/6.33 f_293(sum~cons_3~v450:0) -> f_374(v450:0) :|: v450:0 > 0 && sum~cons_3~v450:0 = 3 + v450:0 19.61/6.33 f_374(v239:0) -> f_293(v239:0) :|: TRUE 19.61/6.33 f_293(sum~cons_2~v183:0) -> f_374(v183:0) :|: v183:0 > 0 && sum~cons_2~v183:0 = 2 + v183:0 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (8) 19.61/6.33 Obligation: 19.61/6.33 Rules: 19.61/6.33 f_374(v239:0) -> f_293(1 + v239:0) :|: v239:0 > 0 19.61/6.33 f_293(sum~cons_3~v450:0) -> f_374(v450:0) :|: v450:0 > 0 && sum~cons_3~v450:0 = 3 + v450:0 19.61/6.33 f_374(x) -> f_293(x) :|: TRUE 19.61/6.33 f_293(sum~cons_2~v183:0) -> f_374(v183:0) :|: v183:0 > 0 && sum~cons_2~v183:0 = 2 + v183:0 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (9) IntTRSCompressionProof (EQUIVALENT) 19.61/6.33 Compressed rules. 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (10) 19.61/6.33 Obligation: 19.61/6.33 Rules: 19.61/6.33 f_293(sum~cons_2~v183:0:0) -> f_374(v183:0:0) :|: v183:0:0 > 0 && sum~cons_2~v183:0:0 = 2 + v183:0:0 19.61/6.33 f_374(x:0) -> f_293(x:0) :|: TRUE 19.61/6.33 f_374(v239:0:0) -> f_293(1 + v239:0:0) :|: v239:0:0 > 0 19.61/6.33 f_293(sum~cons_3~v450:0:0) -> f_374(v450:0:0) :|: v450:0:0 > 0 && sum~cons_3~v450:0:0 = 3 + v450:0:0 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (11) RankingReductionPairProof (EQUIVALENT) 19.61/6.33 Interpretation: 19.61/6.33 [ f_293 ] = 2*f_293_1 + -3 19.61/6.33 [ f_374 ] = 2*f_374_1 19.61/6.33 19.61/6.33 The following rules are decreasing: 19.61/6.33 f_293(sum~cons_2~v183:0:0) -> f_374(v183:0:0) :|: v183:0:0 > 0 && sum~cons_2~v183:0:0 = 2 + v183:0:0 19.61/6.33 f_374(x:0) -> f_293(x:0) :|: TRUE 19.61/6.33 f_374(v239:0:0) -> f_293(1 + v239:0:0) :|: v239:0:0 > 0 19.61/6.33 f_293(sum~cons_3~v450:0:0) -> f_374(v450:0:0) :|: v450:0:0 > 0 && sum~cons_3~v450:0:0 = 3 + v450:0:0 19.61/6.33 19.61/6.33 The following rules are bounded: 19.61/6.33 f_293(sum~cons_2~v183:0:0) -> f_374(v183:0:0) :|: v183:0:0 > 0 && sum~cons_2~v183:0:0 = 2 + v183:0:0 19.61/6.33 f_374(v239:0:0) -> f_293(1 + v239:0:0) :|: v239:0:0 > 0 19.61/6.33 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (12) 19.61/6.33 Obligation: 19.61/6.33 Rules: 19.61/6.33 f_374(x:0) -> f_293(x:0) :|: TRUE 19.61/6.33 f_293(sum~cons_3~v450:0:0) -> f_374(v450:0:0) :|: v450:0:0 > 0 && sum~cons_3~v450:0:0 = 3 + v450:0:0 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (13) IntTRSCompressionProof (EQUIVALENT) 19.61/6.33 Compressed rules. 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (14) 19.61/6.33 Obligation: 19.61/6.33 Rules: 19.61/6.33 f_374(sum~cons_3~v450:0:0:0) -> f_374(v450:0:0:0) :|: v450:0:0:0 > 0 && sum~cons_3~v450:0:0:0 = 3 + v450:0:0:0 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (15) RankingReductionPairProof (EQUIVALENT) 19.61/6.33 Interpretation: 19.61/6.33 [ f_374 ] = 1/3*f_374_1 19.61/6.33 19.61/6.33 The following rules are decreasing: 19.61/6.33 f_374(sum~cons_3~v450:0:0:0) -> f_374(v450:0:0:0) :|: v450:0:0:0 > 0 && sum~cons_3~v450:0:0:0 = 3 + v450:0:0:0 19.61/6.33 19.61/6.33 The following rules are bounded: 19.61/6.33 f_374(sum~cons_3~v450:0:0:0) -> f_374(v450:0:0:0) :|: v450:0:0:0 > 0 && sum~cons_3~v450:0:0:0 = 3 + v450:0:0:0 19.61/6.33 19.61/6.33 19.61/6.33 ---------------------------------------- 19.61/6.33 19.61/6.33 (16) 19.61/6.33 YES 19.61/6.38 EOF