21.62/6.77 YES 21.83/6.79 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 21.83/6.79 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 21.83/6.79 21.83/6.79 21.83/6.79 Termination of the given C Problem could be proven: 21.83/6.79 21.83/6.79 (0) C Problem 21.83/6.79 (1) CToLLVMProof [EQUIVALENT, 175 ms] 21.83/6.79 (2) LLVM problem 21.83/6.79 (3) LLVMToTerminationGraphProof [EQUIVALENT, 1203 ms] 21.83/6.79 (4) LLVM Symbolic Execution Graph 21.83/6.79 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 21.83/6.79 (6) AND 21.83/6.79 (7) LLVM Symbolic Execution SCC 21.83/6.79 (8) SCC2IRS [SOUND, 116 ms] 21.83/6.79 (9) IntTRS 21.83/6.79 (10) IRS2T2 [EQUIVALENT, 0 ms] 21.83/6.79 (11) T2IntSys 21.83/6.79 (12) T2 [EQUIVALENT, 1253 ms] 21.83/6.79 (13) YES 21.83/6.79 (14) LLVM Symbolic Execution SCC 21.83/6.79 (15) SCC2IRS [SOUND, 60 ms] 21.83/6.79 (16) IntTRS 21.83/6.79 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] 21.83/6.79 (18) IntTRS 21.83/6.79 (19) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 21.83/6.79 (20) YES 21.83/6.79 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (0) 21.83/6.79 Obligation: 21.83/6.79 c file /export/starexec/sandbox/benchmark/theBenchmark.c 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (1) CToLLVMProof (EQUIVALENT) 21.83/6.79 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (2) 21.83/6.79 Obligation: 21.83/6.79 LLVM Problem 21.83/6.79 21.83/6.79 Aliases: 21.83/6.79 21.83/6.79 Data layout: 21.83/6.79 21.83/6.79 "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" 21.83/6.79 21.83/6.79 Machine: 21.83/6.79 21.83/6.79 "x86_64-pc-linux-gnu" 21.83/6.79 21.83/6.79 Type definitions: 21.83/6.79 21.83/6.79 Global variables: 21.83/6.79 21.83/6.79 Name: x initVal: null type: *i32 addrSpace: null alignment: 8 threadLocal: false constant: false linkageType: COMMON section: null 21.83/6.79 21.83/6.79 Function declarations and definitions: 21.83/6.79 21.83/6.79 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 21.83/6.79 *BasicFunctionTypename: "foo" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 21.83/6.79 0: 21.83/6.79 %1 = alloca i32, align 4 21.83/6.79 %2 = load @x 21.83/6.79 %3 = load %2 21.83/6.79 %4 = add %3 -1 21.83/6.79 store %4, %2 21.83/6.79 %5 = load %1 21.83/6.79 ret %5 21.83/6.79 21.83/6.79 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 21.83/6.79 0: 21.83/6.79 %1 = alloca i32, align 4 21.83/6.79 store 0, %1 21.83/6.79 %2 = alloca i8, numElementsLit: 4 21.83/6.79 %3 = bitcast *i8 %2 to *i32 21.83/6.79 store %3, @x 21.83/6.79 %4 = call i32 @__VERIFIER_nondet_int() 21.83/6.79 %5 = load @x 21.83/6.79 store %4, %5 21.83/6.79 br %6 21.83/6.79 6: 21.83/6.79 %7 = load @x 21.83/6.79 %8 = load %7 21.83/6.79 %9 = icmp sgt %8 0 21.83/6.79 br %9, %10, %18 21.83/6.79 10: 21.83/6.79 %11 = call i32 @__VERIFIER_nondet_int() 21.83/6.79 %12 = icmp ne %11 0 21.83/6.79 br %12, %13, %15 21.83/6.79 13: 21.83/6.79 %14 = call i32 @foo() 21.83/6.79 br %17 21.83/6.79 15: 21.83/6.79 %16 = call i32 @foo() 21.83/6.79 br %17 21.83/6.79 17: 21.83/6.79 br %6 21.83/6.79 18: 21.83/6.79 ret 0 21.83/6.79 21.83/6.79 21.83/6.79 Analyze Termination of all function calls matching the pattern: 21.83/6.79 main() 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (3) LLVMToTerminationGraphProof (EQUIVALENT) 21.83/6.79 Constructed symbolic execution graph for LLVM program and proved memory safety. 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (4) 21.83/6.79 Obligation: 21.83/6.79 SE Graph 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (5) SymbolicExecutionGraphToSCCProof (SOUND) 21.83/6.79 Splitted symbolic execution graph to 2 SCCs. 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (6) 21.83/6.79 Complex Obligation (AND) 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (7) 21.83/6.79 Obligation: 21.83/6.79 SCC 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (8) SCC2IRS (SOUND) 21.83/6.79 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 21.83/6.79 Generated rules. Obtained 49 rulesP rules: 21.83/6.79 f_235(v189, v212, v196, v190, v197, v191, v198, v213, 0, v193, v192, 1, 7, 3, 8, 4) -> f_238(v189, v212, v191, v196, v190, v197, v198, v213, 0, v193, v192, 1, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_238(v189, v212, v191, v196, v190, v197, v198, v213, 0, v193, v192, 1, 7, 3, 8, 4) -> f_241(v189, v212, v191, v193, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_241(v189, v212, v191, v193, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) -> f_244(v189, v212, v191, v193, v216, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) :|: 1 + v216 = v193 && 0 <= v216 21.83/6.79 f_244(v189, v212, v191, v193, v216, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) -> f_247(v189, v212, v191, v193, v216, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) :|: TRUE 21.83/6.79 f_247(v189, v212, v191, v193, v216, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) -> f_250(v189, v212, v191, v193, v216, v224, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) :|: TRUE 21.83/6.79 f_250(v189, v212, v191, v193, v216, v224, v196, v190, v197, v198, v213, 0, v192, 1, 7, 3, 8, 4) -> f_253(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_253(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) -> f_256(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) :|: TRUE 21.83/6.79 f_256(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) -> f_259(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) :|: TRUE 21.83/6.79 f_259(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) -> f_261(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_261(v189, v190, v191, v192, v193, 1, 0, v224, v196, v197, v198, v216, 7, 3, 8, 4) -> f_263(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_263(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 8, 4) -> f_266(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: 0 < v216 && 2 <= v192 21.83/6.79 f_266(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_270(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_270(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_274(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_274(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_277(v189, v190, v191, v192, v216, 1, v269, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_277(v189, v190, v191, v192, v216, 1, v269, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_280(v189, v190, v191, v192, v216, 1, v269, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: v269 != 0 21.83/6.79 f_277(v189, v190, v191, v192, v216, 1, v269, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_281(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: v269 = 0 21.83/6.79 f_280(v189, v190, v191, v192, v216, 1, v269, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_284(v189, v190, v191, v192, v216, 1, v269, v224, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_284(v189, v190, v191, v192, v216, 1, v269, v224, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_288(v189, v190, v191, v192, v216, 1, v269, v224, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_288(v189, v190, v191, v192, v216, 1, v269, v224, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_292(v189, v196, v190, v197, v191, v198, 0, v216, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_292(v189, v196, v190, v197, v191, v198, 0, v216, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_295(v189, v318, v196, v190, v197, v191, v198, v319, 0, v216, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: 1 <= v318 && v319 = 3 + v318 && 4 <= v319 21.83/6.79 f_295(v189, v318, v196, v190, v197, v191, v198, v319, 0, v216, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_297(v189, v318, v191, v196, v190, v197, v198, v319, 0, v216, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_297(v189, v318, v191, v196, v190, v197, v198, v319, 0, v216, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_299(v189, v318, v191, v216, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_299(v189, v318, v191, v216, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_301(v189, v318, v191, v216, v321, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: 1 + v321 = v216 && 0 <= v321 21.83/6.79 f_301(v189, v318, v191, v216, v321, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_303(v189, v318, v191, v216, v321, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_303(v189, v318, v191, v216, v321, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_305(v189, v318, v191, v216, v321, v326, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_305(v189, v318, v191, v216, v321, v326, v196, v190, v197, v198, v319, 0, v192, 1, v269, v224, 7, 3, 2, 8, 4) -> f_307(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_307(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) -> f_309(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_309(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) -> f_311(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_311(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) -> f_312(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_312(v189, v190, v191, v192, v216, 1, v269, v224, v326, v196, v197, v198, 0, v321, 7, 3, 2, 8, 4) -> f_313(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_313(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_314(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: 0 < v321 && 3 <= v192 21.83/6.79 f_314(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_316(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_316(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_318(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_318(v189, v190, v191, v192, v321, 1, v269, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_320(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_320(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_321(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: v411 != 0 21.83/6.79 f_320(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_322(v189, v190, v191, v192, v321, 1, 0, v224, v326, v196, v197, v198, 7, 3, 2, 8, 4) :|: v411 = 0 21.83/6.79 f_321(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_323(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_323(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_325(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_325(v189, v190, v191, v192, v321, 1, v411, v224, v326, v196, v197, v198, 0, 7, 3, 2, 8, 4) -> f_327(v189, v196, v190, v197, v191, v198, 0, v321, v192, 1, v411, v224, v326, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_327(v189, v196, v190, v197, v191, v198, 0, v321, v192, 1, v411, v224, v326, 7, 3, 2, 8, 4) -> f_292(v189, v196, v190, v197, v191, v198, 0, v321, v192, 1, v269, v224, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_322(v189, v190, v191, v192, v321, 1, 0, v224, v326, v196, v197, v198, 7, 3, 2, 8, 4) -> f_324(v189, v190, v191, v192, v321, 1, 0, v224, v326, v196, v197, v198, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_324(v189, v190, v191, v192, v321, 1, 0, v224, v326, v196, v197, v198, 7, 3, 2, 8, 4) -> f_326(v189, v190, v191, v192, v321, 1, 0, v224, v326, v196, v197, v198, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_326(v189, v190, v191, v192, v321, 1, 0, v224, v326, v196, v197, v198, 7, 3, 2, 8, 4) -> f_328(v189, v196, v190, v197, v191, v198, 0, v321, v192, 1, v224, v326, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_328(v189, v196, v190, v197, v191, v198, 0, v321, v192, 1, v224, v326, 7, 3, 2, 8, 4) -> f_232(v189, v196, v190, v197, v191, v198, 0, v321, v192, 1, 7, 3, 8, 4) :|: TRUE 21.83/6.79 f_232(v189, v196, v190, v197, v191, v198, 0, v193, v192, 1, 7, 3, 8, 4) -> f_235(v189, v212, v196, v190, v197, v191, v198, v213, 0, v193, v192, 1, 7, 3, 8, 4) :|: 1 <= v212 && v213 = 3 + v212 && 4 <= v213 21.83/6.79 f_281(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_285(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_285(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_289(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_289(v189, v190, v191, v192, v216, 1, 0, v224, v196, v197, v198, 7, 3, 2, 8, 4) -> f_293(v189, v196, v190, v197, v191, v198, 0, v216, v192, 1, v224, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_293(v189, v196, v190, v197, v191, v198, 0, v216, v192, 1, v224, 7, 3, 2, 8, 4) -> f_232(v189, v196, v190, v197, v191, v198, 0, v216, v192, 1, 7, 3, 8, 4) :|: TRUE 21.83/6.79 Combined rules. Obtained 6 rulesP rules: 21.83/6.79 f_320(v189:0, v190:0, v191:0, v192:0, 1 + v321:1, 1, v411:0, v224:0, v326:0, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) -> f_320(v189:0, v190:0, v191:0, v192:0, v321:1, 1, v411:1, v224:0, v326:1, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) :|: v321:1 > 0 && v318:0 > 0 && v411:0 < 0 && v192:0 > 2 21.83/6.79 f_320(v189:0, v190:0, v191:0, v192:0, 1 + v321:1, 1, v411:0, v224:0, v326:0, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) -> f_320(v189:0, v190:0, v191:0, v192:0, v321:1, 1, v411:1, v224:0, v326:1, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) :|: v321:1 > 0 && v318:0 > 0 && v411:0 > 0 && v192:0 > 2 21.83/6.79 f_235(v189:0, v212:0, v196:0, v190:0, v197:0, v191:0, v198:0, v213:0, 0, 1 + (1 + v321:0), v192:0, 1, 7, 3, 8, 4) -> f_320(v189:0, v190:0, v191:0, v192:0, v321:0, 1, v411:0, v224:0, v326:0, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) :|: v321:0 > 0 && v192:0 > 2 && v269:0 < 0 && v318:0 > 0 21.83/6.79 f_235(v189:0, v212:0, v196:0, v190:0, v197:0, v191:0, v198:0, v213:0, 0, 1 + (1 + v321:0), v192:0, 1, 7, 3, 8, 4) -> f_320(v189:0, v190:0, v191:0, v192:0, v321:0, 1, v411:0, v224:0, v326:0, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) :|: v321:0 > 0 && v192:0 > 2 && v269:0 > 0 && v318:0 > 0 21.83/6.79 f_320(v189:0, v190:0, v191:0, v192:0, v321:0, 1, 0, v224:0, v326:0, v196:0, v197:0, v198:0, 0, 7, 3, 2, 8, 4) -> f_235(v189:0, v212:0, v196:0, v190:0, v197:0, v191:0, v198:0, 3 + v212:0, 0, v321:0, v192:0, 1, 7, 3, 8, 4) :|: v212:0 > 0 21.83/6.79 f_235(v189:0, v212:0, v196:0, v190:0, v197:0, v191:0, v198:0, v213:0, 0, 1 + v216:0, v192:0, 1, 7, 3, 8, 4) -> f_235(v189:0, v212:1, v196:0, v190:0, v197:0, v191:0, v198:0, 3 + v212:1, 0, v216:0, v192:0, 1, 7, 3, 8, 4) :|: v216:0 > 0 && v192:0 > 1 && v212:1 > 0 21.83/6.79 Filtered unneeded arguments: 21.83/6.79 f_320(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) -> f_320(x4, x5, x7) 21.83/6.79 f_235(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_235(x10, x11) 21.83/6.79 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 21.83/6.79 f_320(v192:0, sum~cons_1~v321:1, v411:0) -> f_320(v192:0, v321:1, v411:1) :|: v411:0 < 0 && v192:0 > 2 && v321:1 > 0 && sum~cons_1~v321:1 = 1 + v321:1 21.83/6.79 f_320(v192:0, sum~cons_1~v321:1, v411:0) -> f_320(v192:0, v321:1, v411:1) :|: v411:0 > 0 && v192:0 > 2 && v321:1 > 0 && sum~cons_1~v321:1 = 1 + v321:1 21.83/6.79 f_235(sum~cons_1~sum~cons_1~v321:0, v192:0) -> f_320(v192:0, v321:0, v411:0) :|: v321:0 > 0 && v192:0 > 2 && sum~cons_1~sum~cons_1~v321:0 = 1 + (1 + v321:0) 21.83/6.79 f_320(v192:0, v321:0, cons_0) -> f_235(v321:0, v192:0) :|: TRUE && cons_0 = 0 21.83/6.79 f_235(sum~cons_1~v216:0, v192:0) -> f_235(v216:0, v192:0) :|: v216:0 > 0 && v192:0 > 1 && sum~cons_1~v216:0 = 1 + v216:0 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (9) 21.83/6.79 Obligation: 21.83/6.79 Rules: 21.83/6.79 f_320(v192:0, sum~cons_1~v321:1, v411:0) -> f_320(v192:0, v321:1, v411:1) :|: v411:0 < 0 && v192:0 > 2 && v321:1 > 0 && sum~cons_1~v321:1 = 1 + v321:1 21.83/6.79 f_320(x, x1, x2) -> f_320(x, x3, x4) :|: x2 > 0 && x > 2 && x3 > 0 && x1 = 1 + x3 21.83/6.79 f_235(x5, x6) -> f_320(x6, x7, x8) :|: x7 > 0 && x6 > 2 && x5 = 1 + (1 + x7) 21.83/6.79 f_320(x9, x10, x11) -> f_235(x10, x9) :|: TRUE && x11 = 0 21.83/6.79 f_235(x12, x13) -> f_235(x14, x13) :|: x14 > 0 && x13 > 1 && x12 = 1 + x14 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (10) IRS2T2 (EQUIVALENT) 21.83/6.79 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 21.83/6.79 21.83/6.79 (f_320_3,1) 21.83/6.79 (f_235_3,2) 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (11) 21.83/6.79 Obligation: 21.83/6.79 START: 0; 21.83/6.79 21.83/6.79 FROM: 0; 21.83/6.79 TO: 1; 21.83/6.79 21.83/6.79 FROM: 0; 21.83/6.79 TO: 2; 21.83/6.79 21.83/6.79 FROM: 1; 21.83/6.79 oldX0 := x0; 21.83/6.79 oldX1 := x1; 21.83/6.79 oldX2 := x2; 21.83/6.79 oldX3 := oldX1 - 1; 21.83/6.79 oldX4 := nondet(); 21.83/6.79 assume(oldX2 < 0 && oldX0 > 2 && oldX3 > 0 && oldX1 = 1 + oldX3); 21.83/6.79 x0 := oldX0; 21.83/6.79 x1 := oldX1 - 1; 21.83/6.79 x2 := oldX4; 21.83/6.79 TO: 1; 21.83/6.79 21.83/6.79 FROM: 1; 21.83/6.79 oldX0 := x0; 21.83/6.79 oldX1 := x1; 21.83/6.79 oldX2 := x2; 21.83/6.79 oldX3 := oldX1 - 1; 21.83/6.79 oldX4 := nondet(); 21.83/6.79 assume(oldX2 > 0 && oldX0 > 2 && oldX3 > 0 && oldX1 = 1 + oldX3); 21.83/6.79 x0 := oldX0; 21.83/6.79 x1 := oldX1 - 1; 21.83/6.79 x2 := oldX4; 21.83/6.79 TO: 1; 21.83/6.79 21.83/6.79 FROM: 2; 21.83/6.79 oldX0 := x0; 21.83/6.79 oldX1 := x1; 21.83/6.79 oldX2 := x2; 21.83/6.79 oldX3 := oldX0 - 2; 21.83/6.79 oldX4 := nondet(); 21.83/6.79 assume(oldX3 > 0 && oldX1 > 2 && oldX0 = 1 + (1 + oldX3)); 21.83/6.79 x0 := oldX1; 21.83/6.79 x1 := oldX0 - 2; 21.83/6.79 x2 := oldX4; 21.83/6.79 TO: 1; 21.83/6.79 21.83/6.79 FROM: 1; 21.83/6.79 oldX0 := x0; 21.83/6.79 oldX1 := x1; 21.83/6.79 oldX2 := x2; 21.83/6.79 oldX3 := nondet(); 21.83/6.79 assume(0 = 0 && oldX2 = 0); 21.83/6.79 x0 := oldX1; 21.83/6.79 x1 := oldX0; 21.83/6.79 x2 := oldX3; 21.83/6.79 TO: 2; 21.83/6.79 21.83/6.79 FROM: 2; 21.83/6.79 oldX0 := x0; 21.83/6.79 oldX1 := x1; 21.83/6.79 oldX2 := x2; 21.83/6.79 oldX3 := oldX0 - 1; 21.83/6.79 oldX4 := nondet(); 21.83/6.79 assume(oldX3 > 0 && oldX1 > 1 && oldX0 = 1 + oldX3); 21.83/6.79 x0 := oldX0 - 1; 21.83/6.79 x1 := oldX1; 21.83/6.79 x2 := oldX4; 21.83/6.79 TO: 2; 21.83/6.79 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (12) T2 (EQUIVALENT) 21.83/6.79 Initially, performed program simplifications using lexicographic rank functions: 21.83/6.79 * Removed transitions 2, 5, 6, 7, 17, 20, 21 using the following rank functions: 21.83/6.79 - Rank function 1: 21.83/6.79 RF for loc. 6: 5+3*x1 21.83/6.79 RF for loc. 7: 1+3*x0 21.83/6.79 RF for loc. 8: 4+3*x1 21.83/6.79 RF for loc. 12: 3*x0 21.83/6.79 Bound for (chained) transitions 5: 10 21.83/6.79 Bound for (chained) transitions 6: 10 21.83/6.79 Bound for (chained) transitions 20: 9 21.83/6.79 Bound for (chained) transitions 21: 6 21.83/6.79 - Rank function 2: 21.83/6.79 RF for loc. 6: 3 21.83/6.79 RF for loc. 7: 1 21.83/6.79 RF for loc. 8: 2 21.83/6.79 RF for loc. 12: 0 21.83/6.79 Bound for (chained) transitions 2: 3 21.83/6.79 Bound for (chained) transitions 7: 2 21.83/6.79 Bound for (chained) transitions 17: 1 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (13) 21.83/6.79 YES 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (14) 21.83/6.79 Obligation: 21.83/6.79 SCC 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (15) SCC2IRS (SOUND) 21.83/6.79 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 21.83/6.79 Generated rules. Obtained 20 rulesP rules: 21.83/6.79 f_278(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_282(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_282(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_286(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_286(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_290(v238, v246, v239, v247, v240, v248, 0, v250, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_290(v238, v246, v239, v247, v240, v248, 0, v250, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_294(v238, v316, v246, v239, v247, v240, v248, v317, 0, v250, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: 1 <= v316 && v317 = 3 + v316 && 4 <= v317 21.83/6.79 f_294(v238, v316, v246, v239, v247, v240, v248, v317, 0, v250, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_296(v238, v316, v240, v246, v239, v247, v248, v317, 0, v250, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_296(v238, v316, v240, v246, v239, v247, v248, v317, 0, v250, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_298(v238, v316, v240, v250, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_298(v238, v316, v240, v250, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_300(v238, v316, v240, v250, v320, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: 1 + v320 = v250 && 0 <= v320 21.83/6.79 f_300(v238, v316, v240, v250, v320, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_302(v238, v316, v240, v250, v320, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_302(v238, v316, v240, v250, v320, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_304(v238, v316, v240, v250, v320, v324, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_304(v238, v316, v240, v250, v320, v324, v246, v239, v247, v248, v317, 0, v241, 1, v268, v245, 7, 3, 2, 8, 4) -> f_306(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_306(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 2, 8, 4) -> f_308(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_308(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 2, 8, 4) -> f_310(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_310(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 2, 8, 4) -> f_258(v238, v239, v240, v241, v250, 1, v268, v324, v246, v247, v248, 0, v320, 7, 3, 8, 4) :|: TRUE 21.83/6.79 f_258(v238, v239, v240, v241, v242, 1, v244, v245, v246, v247, v248, 0, v250, 7, 3, 8, 4) -> f_260(v238, v239, v240, v241, v242, 1, v244, v245, v246, v247, v248, 0, v250, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_260(v238, v239, v240, v241, v242, 1, v244, v245, v246, v247, v248, 0, v250, 7, 3, 8, 4) -> f_262(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 8, 4) :|: 0 = 0 21.83/6.79 f_262(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 8, 4) -> f_264(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: 0 < v250 && 2 <= v241 21.83/6.79 f_264(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_268(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: 0 = 0 21.83/6.79 f_268(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_272(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_272(v238, v239, v240, v241, v250, 1, v244, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_276(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: TRUE 21.83/6.79 f_276(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) -> f_278(v238, v239, v240, v241, v250, 1, v268, v245, v246, v247, v248, 0, 7, 3, 2, 8, 4) :|: v268 != 0 21.83/6.79 Combined rules. Obtained 2 rulesP rules: 21.83/6.79 f_278(v238:0, v239:0, v240:0, v241:0, 1 + v320:0, 1, v268:0, v245:0, v246:0, v247:0, v248:0, 0, 7, 3, 2, 8, 4) -> f_278(v238:0, v239:0, v240:0, v241:0, v320:0, 1, v268:1, v324:0, v246:0, v247:0, v248:0, 0, 7, 3, 2, 8, 4) :|: v320:0 > 0 && v316:0 > 0 && v268:1 < 0 && v241:0 > 1 21.83/6.79 f_278(v238:0, v239:0, v240:0, v241:0, 1 + v320:0, 1, v268:0, v245:0, v246:0, v247:0, v248:0, 0, 7, 3, 2, 8, 4) -> f_278(v238:0, v239:0, v240:0, v241:0, v320:0, 1, v268:1, v324:0, v246:0, v247:0, v248:0, 0, 7, 3, 2, 8, 4) :|: v320:0 > 0 && v316:0 > 0 && v268:1 > 0 && v241:0 > 1 21.83/6.79 Filtered unneeded arguments: 21.83/6.79 f_278(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17) -> f_278(x4, x5) 21.83/6.79 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 21.83/6.79 f_278(v241:0, sum~cons_1~v320:0) -> f_278(v241:0, v320:0) :|: v320:0 > 0 && v241:0 > 1 && sum~cons_1~v320:0 = 1 + v320:0 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (16) 21.83/6.79 Obligation: 21.83/6.79 Rules: 21.83/6.79 f_278(v241:0, sum~cons_1~v320:0) -> f_278(v241:0, v320:0) :|: v320:0 > 0 && v241:0 > 1 && sum~cons_1~v320:0 = 1 + v320:0 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (17) IntTRSCompressionProof (EQUIVALENT) 21.83/6.79 Compressed rules. 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (18) 21.83/6.79 Obligation: 21.83/6.79 Rules: 21.83/6.79 f_278(v241:0:0, sum~cons_1~v320:0:0) -> f_278(v241:0:0, v320:0:0) :|: v320:0:0 > 0 && v241:0:0 > 1 && sum~cons_1~v320:0:0 = 1 + v320:0:0 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (19) PolynomialOrderProcessor (EQUIVALENT) 21.83/6.79 Found the following polynomial interpretation: 21.83/6.79 [f_278(x, x1)] = x1 21.83/6.79 21.83/6.79 The following rules are decreasing: 21.83/6.79 f_278(v241:0:0, sum~cons_1~v320:0:0) -> f_278(v241:0:0, v320:0:0) :|: v320:0:0 > 0 && v241:0:0 > 1 && sum~cons_1~v320:0:0 = 1 + v320:0:0 21.83/6.79 The following rules are bounded: 21.83/6.79 f_278(v241:0:0, sum~cons_1~v320:0:0) -> f_278(v241:0:0, v320:0:0) :|: v320:0:0 > 0 && v241:0:0 > 1 && sum~cons_1~v320:0:0 = 1 + v320:0:0 21.83/6.79 21.83/6.79 ---------------------------------------- 21.83/6.79 21.83/6.79 (20) 21.83/6.79 YES 21.83/6.83 EOF