22.69/9.02 YES 22.69/9.03 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 22.69/9.03 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 22.69/9.03 22.69/9.03 22.69/9.03 Termination of the given C Problem could be proven: 22.69/9.03 22.69/9.03 (0) C Problem 22.69/9.03 (1) CToLLVMProof [EQUIVALENT, 176 ms] 22.69/9.03 (2) LLVM problem 22.69/9.03 (3) LLVMToTerminationGraphProof [EQUIVALENT, 2265 ms] 22.69/9.03 (4) LLVM Symbolic Execution Graph 22.69/9.03 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 22.69/9.03 (6) LLVM Symbolic Execution SCC 22.69/9.03 (7) SCC2IRS [SOUND, 184 ms] 22.69/9.03 (8) IntTRS 22.69/9.03 (9) IRS2T2 [EQUIVALENT, 0 ms] 22.69/9.03 (10) T2IntSys 22.69/9.03 (11) T2 [EQUIVALENT, 1663 ms] 22.69/9.03 (12) YES 22.69/9.03 22.69/9.03 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (0) 22.69/9.03 Obligation: 22.69/9.03 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (1) CToLLVMProof (EQUIVALENT) 22.69/9.03 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (2) 22.69/9.03 Obligation: 22.69/9.03 LLVM Problem 22.69/9.03 22.69/9.03 Aliases: 22.69/9.03 22.69/9.03 Data layout: 22.69/9.03 22.69/9.03 "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" 22.69/9.03 22.69/9.03 Machine: 22.69/9.03 22.69/9.03 "x86_64-pc-linux-gnu" 22.69/9.03 22.69/9.03 Type definitions: 22.69/9.03 22.69/9.03 Global variables: 22.69/9.03 22.69/9.03 Function declarations and definitions: 22.69/9.03 22.69/9.03 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 22.69/9.03 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 22.69/9.03 0: 22.69/9.03 %1 = alloca i32, align 4 22.69/9.03 %x = alloca i32, align 4 22.69/9.03 %y = alloca i32, align 4 22.69/9.03 %z = alloca i32, align 4 22.69/9.03 store 0, %1 22.69/9.03 %2 = call i32 @__VERIFIER_nondet_int() 22.69/9.03 store %2, %x 22.69/9.03 %3 = call i32 @__VERIFIER_nondet_int() 22.69/9.03 store %3, %y 22.69/9.03 %4 = call i32 @__VERIFIER_nondet_int() 22.69/9.03 store %4, %z 22.69/9.03 %5 = call i32 @random() 22.69/9.03 %6 = call i32 @random() 22.69/9.03 Unnamed Call-Instruction = call BasicVoidType @loop(i32 %5, i32 %6) 22.69/9.03 %7 = load %1 22.69/9.03 ret %7 22.69/9.03 22.69/9.03 *BasicFunctionTypename: "loop" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (a i32, b i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 22.69/9.03 0: 22.69/9.03 %1 = alloca i32, align 4 22.69/9.03 %2 = alloca i32, align 4 22.69/9.03 %r = alloca i32, align 4 22.69/9.03 store %a, %1 22.69/9.03 store %b, %2 22.69/9.03 %3 = load %2 22.69/9.03 %4 = icmp sgt %3 0 22.69/9.03 br %4, %5, %17 22.69/9.03 5: 22.69/9.03 %6 = call i32 @random() 22.69/9.03 store %6, %r 22.69/9.03 %7 = load %1 22.69/9.03 %8 = sub %7 1 22.69/9.03 %9 = load %r 22.69/9.03 %10 = sub %8 %9 22.69/9.03 store %10, %2 22.69/9.03 %11 = load %1 22.69/9.03 %12 = sub %11 1 22.69/9.03 %13 = load %r 22.69/9.03 %14 = sub %12 %13 22.69/9.03 store %14, %1 22.69/9.03 %15 = load %1 22.69/9.03 %16 = load %2 22.69/9.03 Unnamed Call-Instruction = call BasicVoidType @loop(i32 %15, i32 %16) 22.69/9.03 br %17 22.69/9.03 17: 22.69/9.03 ret void 22.69/9.03 22.69/9.03 *BasicFunctionTypename: "random" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 22.69/9.03 0: 22.69/9.03 %1 = alloca i32, align 4 22.69/9.03 %x = alloca i32, align 4 22.69/9.03 %2 = call i32 @__VERIFIER_nondet_int() 22.69/9.03 store %2, %x 22.69/9.03 %3 = load %x 22.69/9.03 %4 = icmp slt %3 0 22.69/9.03 br %4, %5, %8 22.69/9.03 5: 22.69/9.03 %6 = load %x 22.69/9.03 %7 = sub 0 %6 22.69/9.03 store %7, %1 22.69/9.03 br %10 22.69/9.03 8: 22.69/9.03 %9 = load %x 22.69/9.03 store %9, %1 22.69/9.03 br %10 22.69/9.03 10: 22.69/9.03 %11 = load %1 22.69/9.03 ret %11 22.69/9.03 22.69/9.03 22.69/9.03 Analyze Termination of all function calls matching the pattern: 22.69/9.03 main() 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (3) LLVMToTerminationGraphProof (EQUIVALENT) 22.69/9.03 Constructed symbolic execution graph for LLVM program and proved memory safety. 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (4) 22.69/9.03 Obligation: 22.69/9.03 SE Graph 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (5) SymbolicExecutionGraphToSCCProof (SOUND) 22.69/9.03 Splitted symbolic execution graph to 1 SCC. 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (6) 22.69/9.03 Obligation: 22.69/9.03 SCC 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (7) SCC2IRS (SOUND) 22.69/9.03 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 22.69/9.03 Generated rules. Obtained 64 rulesP rules: 22.69/9.03 f_310(v184, v185, v186, v187, 3, 1, 4) -> f_311(v184, v185, v186, v188, v187, v189, 3, 1, 4) :|: 1 <= v188 && v189 = 3 + v188 && 4 <= v189 22.69/9.03 f_311(v184, v185, v186, v188, v187, v189, 3, 1, 4) -> f_312(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) :|: 1 <= v190 && v191 = 3 + v190 && 4 <= v191 22.69/9.03 f_312(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) -> f_313(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) :|: TRUE 22.69/9.03 f_313(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) -> f_314(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) :|: TRUE 22.69/9.03 f_314(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) -> f_315(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) :|: 0 = 0 22.69/9.03 f_315(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) -> f_316(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) :|: 0 < v185 22.69/9.03 f_316(v184, v185, v186, v188, v190, v187, v189, v191, 3, 1, 4) -> f_318(v184, v185, v186, v188, v190, 1, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_318(v184, v185, v186, v188, v190, 1, v187, v189, v191, 3, 4) -> f_320(v184, v185, v186, v188, v190, 1, v187, v189, v191, 3, 4) :|: TRUE 22.69/9.03 f_320(v184, v185, v186, v188, v190, 1, v187, v189, v191, 3, 4) -> f_322(v186, v187, v188, v189, v190, v191, v184, v185, 1, 3, 4) :|: TRUE 22.69/9.03 f_322(v186, v187, v188, v189, v190, v191, v184, v185, 1, 3, 4) -> f_325(v210, v186, v187, v188, v189, v190, v191, v211, v184, v185, 1, 3, 4) :|: 1 <= v210 && v211 = 3 + v210 && 4 <= v211 22.69/9.03 f_325(v210, v186, v187, v188, v189, v190, v191, v211, v184, v185, 1, 3, 4) -> f_327(v210, v212, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: 1 <= v212 && v213 = 3 + v212 && 4 <= v213 22.69/9.03 f_327(v210, v212, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_329(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: TRUE 22.69/9.03 f_329(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_330(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: TRUE 22.69/9.03 f_330(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_331(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: 0 = 0 22.69/9.03 f_331(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_332(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4, 0) :|: v214 < 0 22.69/9.03 f_331(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_333(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4, 0) :|: 0 <= v214 22.69/9.03 f_332(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4, 0) -> f_334(v210, v212, v214, 1, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_334(v210, v212, v214, 1, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 4, 0) -> f_336(v210, v212, v214, 1, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 4, 0) :|: TRUE 22.69/9.03 f_336(v210, v212, v214, 1, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 4, 0) -> f_338(v210, v212, v214, 1, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_338(v210, v212, v214, 1, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 4, 0) -> f_340(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) :|: v224 + v214 = 0 && 1 <= v224 22.69/9.03 f_340(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) -> f_342(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) :|: TRUE 22.69/9.03 f_342(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) -> f_344(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) :|: TRUE 22.69/9.03 f_344(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) -> f_346(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) :|: 0 = 0 22.69/9.03 f_346(v210, v212, v214, 1, v224, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 3, 0, 4) -> f_348(v184, v185, v186, v188, v190, 1, v224, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_348(v184, v185, v186, v188, v190, 1, v224, v187, v189, v191, 3, 4) -> f_350(v184, v185, v186, v188, v190, 1, v224, v187, v189, v191, 3, 4) :|: TRUE 22.69/9.03 f_350(v184, v185, v186, v188, v190, 1, v224, v187, v189, v191, 3, 4) -> f_352(v184, v185, v186, v188, v190, 1, v224, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_352(v184, v185, v186, v188, v190, 1, v224, v187, v189, v191, 3, 4) -> f_354(v184, v185, v186, v188, v190, 1, v224, v252, v187, v189, v191, 3, 4) :|: 1 + v252 = v184 22.69/9.03 f_354(v184, v185, v186, v188, v190, 1, v224, v252, v187, v189, v191, 3, 4) -> f_356(v184, v185, v186, v188, v190, 1, v224, v252, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_356(v184, v185, v186, v188, v190, 1, v224, v252, v187, v189, v191, 3, 4) -> f_358(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) :|: v254 + v224 = v252 22.69/9.03 f_358(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) -> f_360(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) :|: TRUE 22.69/9.03 f_360(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) -> f_362(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_362(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) -> f_364(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) :|: 1 + v252 = v184 22.69/9.03 f_364(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) -> f_366(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_366(v184, v185, v186, v188, v190, 1, v224, v252, v254, v187, v189, v191, 3, 4) -> f_368(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) :|: v258 + v224 = v252 && v254 = v258 22.69/9.03 f_368(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) -> f_370(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) :|: TRUE 22.69/9.03 f_370(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) -> f_372(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_372(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) -> f_374(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) :|: 0 = 0 22.69/9.03 f_374(v184, v185, v186, v188, v190, 1, v224, v252, v258, v187, v189, v191, 3, 4) -> f_376(v258, v186, v187, v188, v189, v190, v191, v224, v184, v185, 1, v252, 3, 4) :|: 0 = 0 22.69/9.03 f_376(v258, v186, v187, v188, v189, v190, v191, v224, v184, v185, 1, v252, 3, 4) -> f_378(v258, v186, v187, v188, v189, v190, v191, v224, 3, 1, 4) :|: TRUE 22.69/9.03 f_378(v258, v186, v187, v188, v189, v190, v191, v224, 3, 1, 4) -> f_309(v258, v258) :|: TRUE 22.69/9.03 f_309(v184, v185) -> f_310(v184, v185, v186, v187, 3, 1, 4) :|: 1 <= v186 && v187 = 3 + v186 && 4 <= v187 22.69/9.03 f_333(v210, v212, v214, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4, 0) -> f_335(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: 0 = 0 22.69/9.03 f_335(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_337(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: TRUE 22.69/9.03 f_337(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_339(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: 0 = 0 22.69/9.03 f_339(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_341(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: TRUE 22.69/9.03 f_341(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_343(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: TRUE 22.69/9.03 f_343(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_345(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) :|: 0 = 0 22.69/9.03 f_345(v210, v212, v214, 0, v186, v187, v188, v189, v190, v191, v211, v213, v184, v185, 1, 3, 4) -> f_347(v184, v185, v186, v188, v190, 1, v214, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_347(v184, v185, v186, v188, v190, 1, v214, v187, v189, v191, 3, 4, 0) -> f_349(v184, v185, v186, v188, v190, 1, v214, v187, v189, v191, 3, 4, 0) :|: TRUE 22.69/9.03 f_349(v184, v185, v186, v188, v190, 1, v214, v187, v189, v191, 3, 4, 0) -> f_351(v184, v185, v186, v188, v190, 1, v214, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_351(v184, v185, v186, v188, v190, 1, v214, v187, v189, v191, 3, 4, 0) -> f_353(v184, v185, v186, v188, v190, 1, v214, v251, v187, v189, v191, 3, 4, 0) :|: 1 + v251 = v184 22.69/9.03 f_353(v184, v185, v186, v188, v190, 1, v214, v251, v187, v189, v191, 3, 4, 0) -> f_355(v184, v185, v186, v188, v190, 1, v214, v251, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_355(v184, v185, v186, v188, v190, 1, v214, v251, v187, v189, v191, 3, 4, 0) -> f_357(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) :|: v253 + v214 = v251 22.69/9.03 f_357(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) -> f_359(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) :|: TRUE 22.69/9.03 f_359(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) -> f_361(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_361(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) -> f_363(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) :|: 1 + v251 = v184 22.69/9.03 f_363(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) -> f_365(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_365(v184, v185, v186, v188, v190, 1, v214, v251, v253, v187, v189, v191, 3, 4, 0) -> f_367(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) :|: v257 + v214 = v251 && v253 = v257 22.69/9.03 f_367(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) -> f_369(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) :|: TRUE 22.69/9.03 f_369(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) -> f_371(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_371(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) -> f_373(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_373(v184, v185, v186, v188, v190, 1, v214, v251, v257, v187, v189, v191, 3, 4, 0) -> f_375(v257, v186, v187, v188, v189, v190, v191, v214, v184, v185, 1, v251, 3, 4, 0) :|: 0 = 0 22.69/9.03 f_375(v257, v186, v187, v188, v189, v190, v191, v214, v184, v185, 1, v251, 3, 4, 0) -> f_377(v257, v186, v187, v188, v189, v190, v191, v214, 3, 1, 4, 0) :|: TRUE 22.69/9.03 f_377(v257, v186, v187, v188, v189, v190, v191, v214, 3, 1, 4, 0) -> f_309(v257, v257) :|: TRUE 22.69/9.03 Combined rules. Obtained 2 rulesP rules: 22.69/9.03 f_310(1 + (v253:0 + v214:0), v185:0, v186:0, v187:0, 3, 1, 4) -> f_310(v253:0, v253:0, v186:1, 3 + v186:1, 3, 1, 4) :|: v190:0 > 0 && v188:0 > 0 && v185:0 > 0 && v210:0 > 0 && v212:0 > 0 && v214:0 > -1 && v186:1 > 0 22.69/9.03 f_310(1 + (v254:0 + v224:0), v185:0, v186:0, v187:0, 3, 1, 4) -> f_310(v254:0, v254:0, v186:1, 3 + v186:1, 3, 1, 4) :|: v190:0 > 0 && v188:0 > 0 && v185:0 > 0 && v210:0 > 0 && v212:0 > 0 && v214:0 < 0 && v224:0 > 0 && v224:0 + v214:0 = 0 && v186:1 > 0 22.69/9.03 Filtered unneeded arguments: 22.69/9.03 f_310(x1, x2, x3, x4, x5, x6, x7) -> f_310(x1, x2) 22.69/9.03 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 22.69/9.03 f_310(sum~cons_1~sum~v253:0~v214:0, v185:0) -> f_310(v253:0, v253:0) :|: v185:0 > 0 && v214:0 > -1 && sum~cons_1~sum~v253:0~v214:0 = 1 + (v253:0 + v214:0) 22.69/9.03 f_310(sum~cons_1~sum~v254:0~v224:0, v185:0) -> f_310(v254:0, v254:0) :|: v185:0 > 0 && v224:0 > 0 && sum~cons_1~sum~v254:0~v224:0 = 1 + (v254:0 + v224:0) 22.69/9.03 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (8) 22.69/9.03 Obligation: 22.69/9.03 Rules: 22.69/9.03 f_310(sum~cons_1~sum~v253:0~v214:0, v185:0) -> f_310(v253:0, v253:0) :|: v185:0 > 0 && v214:0 > -1 && sum~cons_1~sum~v253:0~v214:0 = 1 + (v253:0 + v214:0) 22.69/9.03 f_310(x, x1) -> f_310(x2, x2) :|: x1 > 0 && x3 > 0 && x = 1 + (x2 + x3) 22.69/9.03 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (9) IRS2T2 (EQUIVALENT) 22.69/9.03 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 22.69/9.03 22.69/9.03 (f_310_2,1) 22.69/9.03 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (10) 22.69/9.03 Obligation: 22.69/9.03 START: 0; 22.69/9.03 22.69/9.03 FROM: 0; 22.69/9.03 TO: 1; 22.69/9.03 22.69/9.03 FROM: 1; 22.69/9.03 oldX0 := x0; 22.69/9.03 oldX1 := x1; 22.69/9.03 oldX2 := nondet(); 22.69/9.03 oldX3 := nondet(); 22.69/9.03 assume(oldX1 > 0 && oldX3 > -1 && oldX0 = 1 + (oldX2 + oldX3)); 22.69/9.03 x0 := oldX2; 22.69/9.03 x1 := oldX2; 22.69/9.03 TO: 1; 22.69/9.03 22.69/9.03 FROM: 1; 22.69/9.03 oldX0 := x0; 22.69/9.03 oldX1 := x1; 22.69/9.03 oldX2 := nondet(); 22.69/9.03 oldX3 := nondet(); 22.69/9.03 assume(oldX1 > 0 && oldX3 > 0 && oldX0 = 1 + (oldX2 + oldX3)); 22.69/9.03 x0 := oldX2; 22.69/9.03 x1 := oldX2; 22.69/9.03 TO: 1; 22.69/9.03 22.69/9.03 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (11) T2 (EQUIVALENT) 22.69/9.03 No proof given by T2 22.69/9.03 ---------------------------------------- 22.69/9.03 22.69/9.03 (12) 22.69/9.03 YES 22.69/9.08 EOF