29.07/8.50 NO 29.28/8.53 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 29.28/8.53 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 29.28/8.53 29.28/8.53 29.28/8.53 Termination of the given C Problem could be disproven: 29.28/8.53 29.28/8.53 (0) C Problem 29.28/8.53 (1) CToLLVMProof [EQUIVALENT, 173 ms] 29.28/8.53 (2) LLVM problem 29.28/8.53 (3) LLVMToTerminationGraphProof [EQUIVALENT, 994 ms] 29.28/8.53 (4) LLVM Symbolic Execution Graph 29.28/8.53 (5) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] 29.28/8.53 (6) AND 29.28/8.53 (7) LLVM Symbolic Execution Lasso 29.28/8.53 (8) Lasso2IRS [EQUIVALENT, 84 ms] 29.28/8.53 (9) IntTRS 29.28/8.53 (10) IRS2T2 [EQUIVALENT, 0 ms] 29.28/8.53 (11) T2IntSys 29.28/8.53 (12) LLVM Symbolic Execution Lasso 29.28/8.53 (13) Lasso2IRS [EQUIVALENT, 40 ms] 29.28/8.53 (14) IntTRS 29.28/8.53 (15) IRS2T2 [EQUIVALENT, 0 ms] 29.28/8.53 (16) T2IntSys 29.28/8.53 (17) LLVM Symbolic Execution Lasso 29.28/8.53 (18) Lasso2IRS [EQUIVALENT, 83 ms] 29.28/8.53 (19) IntTRS 29.28/8.53 (20) IRS2T2 [EQUIVALENT, 0 ms] 29.28/8.53 (21) T2IntSys 29.28/8.53 (22) T2 [COMPLETE, 933 ms] 29.28/8.53 (23) NO 29.28/8.53 (24) LLVM Symbolic Execution Lasso 29.28/8.53 (25) Lasso2IRS [EQUIVALENT, 45 ms] 29.28/8.53 (26) IntTRS 29.28/8.53 (27) IRS2T2 [EQUIVALENT, 0 ms] 29.28/8.53 (28) T2IntSys 29.28/8.53 (29) LLVM Symbolic Execution Lasso 29.28/8.53 (30) Lasso2IRS [EQUIVALENT, 28 ms] 29.28/8.53 (31) IntTRS 29.28/8.53 (32) IRS2T2 [EQUIVALENT, 0 ms] 29.28/8.53 (33) T2IntSys 29.28/8.53 (34) T2 [EQUIVALENT, 744 ms] 29.28/8.53 (35) YES 29.28/8.53 (36) LLVM Symbolic Execution Lasso 29.28/8.53 (37) Lasso2IRS [EQUIVALENT, 29 ms] 29.28/8.53 (38) IntTRS 29.28/8.53 (39) IRS2T2 [EQUIVALENT, 0 ms] 29.28/8.53 (40) T2IntSys 29.28/8.53 (41) T2 [COMPLETE, 583 ms] 29.28/8.53 (42) NO 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (0) 29.28/8.53 Obligation: 29.28/8.53 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (1) CToLLVMProof (EQUIVALENT) 29.28/8.53 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (2) 29.28/8.53 Obligation: 29.28/8.53 LLVM Problem 29.28/8.53 29.28/8.53 Aliases: 29.28/8.53 29.28/8.53 Data layout: 29.28/8.53 29.28/8.53 "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" 29.28/8.53 29.28/8.53 Machine: 29.28/8.53 29.28/8.53 "x86_64-pc-linux-gnu" 29.28/8.53 29.28/8.53 Type definitions: 29.28/8.53 29.28/8.53 Global variables: 29.28/8.53 29.28/8.53 Function declarations and definitions: 29.28/8.53 29.28/8.53 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 29.28/8.53 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 29.28/8.53 0: 29.28/8.53 %1 = alloca i32, align 4 29.28/8.53 %x = alloca i32, align 4 29.28/8.53 store 0, %1 29.28/8.53 %2 = call i32 (...)* @__VERIFIER_nondet_int() 29.28/8.53 store %2, %x 29.28/8.53 br %3 29.28/8.53 3: 29.28/8.53 %4 = load %x 29.28/8.53 %5 = icmp sge %4 0 29.28/8.53 br %5, %6, %16 29.28/8.53 6: 29.28/8.53 %7 = call i32 (...)* @__VERIFIER_nondet_int() 29.28/8.53 %8 = icmp ne %7 0 29.28/8.53 br %8, %9, %12 29.28/8.53 9: 29.28/8.53 %10 = load %x 29.28/8.53 %11 = sub %10 1 29.28/8.53 store %11, %x 29.28/8.53 br %15 29.28/8.53 12: 29.28/8.53 %13 = load %x 29.28/8.53 %14 = add %13 1 29.28/8.53 store %14, %x 29.28/8.53 br %15 29.28/8.53 15: 29.28/8.53 br %3 29.28/8.53 16: 29.28/8.53 ret 0 29.28/8.53 29.28/8.53 29.28/8.53 Analyze Termination of all function calls matching the pattern: 29.28/8.53 main() 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (3) LLVMToTerminationGraphProof (EQUIVALENT) 29.28/8.53 Constructed symbolic execution graph for LLVM program and proved memory safety. 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (4) 29.28/8.53 Obligation: 29.28/8.53 SE Graph 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (5) SymbolicExecutionGraphToLassoProof (COMPLETE) 29.28/8.53 Converted SEGraph to 6 dependent lassos. 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (6) 29.28/8.53 Complex Obligation (AND) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (7) 29.28/8.53 Obligation: 29.28/8.53 Lasso 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (8) Lasso2IRS (EQUIVALENT) 29.28/8.53 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.28/8.53 Generated rules. Obtained 76 rulesP rules: 29.28/8.53 f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 <= v412 && 1 <= v407 29.28/8.53 f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: v513 != 0 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: v513 = 0 29.28/8.53 f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) -> f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: 1 + v549 = v412 && 0 <= 1 + v549 29.28/8.53 f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_264(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_264(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) -> f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: v407 = 1 + v412 29.28/8.53 f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_266(v404, v405, v406, v412, 1, 0, v407, v412, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_266(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 != 0 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 = 0 29.28/8.53 f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) -> f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: 1 + v445 = v450 29.28/8.53 f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_264(v442, v443, v444, v450, 1, v512, v445, v450, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) -> f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: v548 = 1 + v450 && 2 <= v548 29.28/8.53 f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_266(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_69 -> f_70(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 29.28/8.53 f_70(v1, v2, 3, 1, 4) -> f_71(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 29.28/8.53 f_71(v1, v3, v2, v4, 3, 1, 4) -> f_72(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_72(v1, v3, v2, v4, 0, 3, 1, 4) -> f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 29.28/8.53 f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 <= v5 29.28/8.53 f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_85(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: v7 = 0 29.28/8.53 f_85(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_87(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: 0 = 0 29.28/8.53 f_87(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_89(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_89(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_91(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: 0 = 0 29.28/8.53 f_91(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_93(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: v9 = 1 + v5 && 1 <= v9 29.28/8.53 f_93(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_95(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_95(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_97(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_97(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_138(v1, v3, v5, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_138(v39, v40, v41, v42, 1, 0, v45, v46, v47, 3, 4) -> f_180(v39, v40, v41, v42, 1, 0, v45, v46, v47, 3, 4) :|: TRUE 29.28/8.53 f_180(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) -> f_183(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_183(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) -> f_186(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_186(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_189(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_189(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_191(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_191(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_194(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_194(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) -> f_197(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) :|: v167 != 0 29.28/8.53 f_197(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) -> f_201(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_201(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_204(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 f_204(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_208(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_208(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_212(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: 1 + v115 = v118 29.28/8.53 f_212(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_216(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 f_216(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_220(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 f_220(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_264(v112, v113, v114, v118, 1, v167, v115, v118, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 Combined rules. Obtained 8 rulesP rules: 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 < 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, v450:0, 1, 0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_279(v442:0, v443:0, v444:0, 1 + v450:0, 1, v512:1, 0, v448:0, v449:0, v450:0, v451:0, v452:0, 3, 4) :|: v450:0 > 0 29.28/8.53 f_69 -> f_267(v1:0, v3:0, v5:0, 1 + v5:0, 1, v167:0, v5:0, 1 + v5:0, v5:0, 3 + v1:0, 3 + v3:0, 0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > -1 && v167:0 < 0 29.28/8.53 f_69 -> f_267(v1:0, v3:0, v5:0, 1 + v5:0, 1, v167:0, v5:0, 1 + v5:0, v5:0, 3 + v1:0, 3 + v3:0, 0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > -1 && v167:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 < 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 > 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, 1 + v412:0, 1, v409:0, v410:0, v411:0, v412:0, v413:0, v414:0, 0, 3, 4) -> f_279(v404:0, v405:0, v406:0, 1 + v412:0, 1, v512:0, 0, 1 + v412:0, v412:0, v412:0, v413:0, v414:0, 3, 4) :|: v412:0 > -1 29.28/8.53 Filtered unneeded arguments: 29.28/8.53 f_267(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_267(x4, x9) 29.28/8.53 f_279(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_279(x4, x6, x10) 29.28/8.53 Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_69 -> f_267(1 + v5:0, v5:0) :|: v5:0 > -1 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 < 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 > 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (9) 29.28/8.53 Obligation: 29.28/8.53 Rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_69 -> f_267(1 + v5:0, v5:0) :|: v5:0 > -1 29.28/8.53 f_279(x, x1, x2) -> f_267(1 + x2, x2) :|: x1 < 0 && x = 1 + x2 29.28/8.53 f_279(x3, x4, x5) -> f_267(1 + x5, x5) :|: x4 > 0 && x3 = 1 + x5 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 Start term: f_69 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (10) IRS2T2 (EQUIVALENT) 29.28/8.53 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.28/8.53 29.28/8.53 (f_267_3,1) 29.28/8.53 (f_279_3,2) 29.28/8.53 (f_69_3,3) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (11) 29.28/8.53 Obligation: 29.28/8.53 START: 3; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := oldX1 - 1; 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX3 > -2 && oldX1 = 1 + oldX3); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX1 - 1; 29.28/8.53 x2 := oldX4; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX1 = 0); 29.28/8.53 x0 := 1 + oldX0; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX0; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 FROM: 3; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX3 > -1); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX4; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 < 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > -1 && oldX0 = 1 + oldX1); 29.28/8.53 x0 := 1 + oldX1; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX1; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (12) 29.28/8.53 Obligation: 29.28/8.53 Lasso 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (13) Lasso2IRS (EQUIVALENT) 29.28/8.53 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.28/8.53 Generated rules. Obtained 77 rulesP rules: 29.28/8.53 f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 <= v412 && 1 <= v407 29.28/8.53 f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: v513 != 0 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: v513 = 0 29.28/8.53 f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) -> f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: 1 + v549 = v412 && 0 <= 1 + v549 29.28/8.53 f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_264(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_264(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) -> f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: v407 = 1 + v412 29.28/8.53 f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_266(v404, v405, v406, v412, 1, 0, v407, v412, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_266(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 != 0 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 = 0 29.28/8.53 f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) -> f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: 1 + v445 = v450 29.28/8.53 f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_264(v442, v443, v444, v450, 1, v512, v445, v450, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) -> f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: v548 = 1 + v450 && 2 <= v548 29.28/8.53 f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_266(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_69 -> f_70(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 29.28/8.53 f_70(v1, v2, 3, 1, 4) -> f_71(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 29.28/8.53 f_71(v1, v3, v2, v4, 3, 1, 4) -> f_72(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_72(v1, v3, v2, v4, 0, 3, 1, 4) -> f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 29.28/8.53 f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 <= v5 29.28/8.53 f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_84(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: v7 != 0 29.28/8.53 f_84(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_86(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_86(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_88(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_88(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_90(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_90(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_92(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: 1 + v8 = v5 && 0 <= 1 + v8 29.28/8.53 f_92(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_94(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_94(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_96(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_96(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_98(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_98(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_143(v1, v3, v5, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_143(v75, v76, v77, v78, 1, v80, v81, v82, v83, 0, 3, 4) -> f_188(v75, v76, v77, v78, 1, v80, v81, v82, v83, 0, 3, 4) :|: TRUE 29.28/8.53 f_188(v151, v152, v153, v154, 1, v156, v157, v158, v159, 0, 3, 4) -> f_190(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_190(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_192(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 <= v157 && 1 <= v154 && 1 <= v153 29.28/8.53 f_192(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_195(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_195(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_199(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_199(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_203(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_203(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) -> f_207(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: v171 = 0 29.28/8.53 f_207(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_211(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: 0 = 0 29.28/8.53 f_211(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_215(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 f_215(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_219(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: 0 = 0 29.28/8.53 f_219(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_223(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: v154 = 1 + v157 29.28/8.53 f_223(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_226(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 f_226(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_229(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 f_229(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_266(v151, v152, v153, v157, 1, 0, v154, v157, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 Combined rules. Obtained 8 rulesP rules: 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 < 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, v450:0, 1, 0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_279(v442:0, v443:0, v444:0, 1 + v450:0, 1, v512:1, 0, v448:0, v449:0, v450:0, v451:0, v452:0, 3, 4) :|: v450:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 < 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 > 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, 1 + v412:0, 1, v409:0, v410:0, v411:0, v412:0, v413:0, v414:0, 0, 3, 4) -> f_279(v404:0, v405:0, v406:0, 1 + v412:0, 1, v512:0, 0, 1 + v412:0, v412:0, v412:0, v413:0, v414:0, 3, 4) :|: v412:0 > -1 29.28/8.53 f_69 -> f_279(v1:0, v3:0, 1 + v8:0, 1 + v8:0, 1, v512:0, 0, 1 + v8:0, v8:0, v8:0, 3 + v1:0, 3 + v3:0, 3, 4) :|: v8:0 > -1 && v3:0 > 0 && v1:0 > 0 && v7:0 < 0 29.28/8.53 f_69 -> f_279(v1:0, v3:0, 1 + v8:0, 1 + v8:0, 1, v512:0, 0, 1 + v8:0, v8:0, v8:0, 3 + v1:0, 3 + v3:0, 3, 4) :|: v8:0 > -1 && v3:0 > 0 && v1:0 > 0 && v7:0 > 0 29.28/8.53 Filtered unneeded arguments: 29.28/8.53 f_267(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_267(x4, x9) 29.28/8.53 f_279(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_279(x4, x6, x10) 29.28/8.53 Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 < 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 > 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 f_69 -> f_279(1 + v8:0, v512:0, v8:0) :|: v8:0 > -1 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (14) 29.28/8.53 Obligation: 29.28/8.53 Rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_279(x, x1, x2) -> f_267(1 + x2, x2) :|: x1 < 0 && x = 1 + x2 29.28/8.53 f_279(x3, x4, x5) -> f_267(1 + x5, x5) :|: x4 > 0 && x3 = 1 + x5 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 f_69 -> f_279(1 + x6, x7, x6) :|: x6 > -1 29.28/8.53 Start term: f_69 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (15) IRS2T2 (EQUIVALENT) 29.28/8.53 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.28/8.53 29.28/8.53 (f_267_3,1) 29.28/8.53 (f_279_3,2) 29.28/8.53 (f_69_3,3) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (16) 29.28/8.53 Obligation: 29.28/8.53 START: 3; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := oldX1 - 1; 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX3 > -2 && oldX1 = 1 + oldX3); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX1 - 1; 29.28/8.53 x2 := oldX4; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX1 = 0); 29.28/8.53 x0 := 1 + oldX0; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX0; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 < 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > -1 && oldX0 = 1 + oldX1); 29.28/8.53 x0 := 1 + oldX1; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX1; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 FROM: 3; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX3 > -1); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX4; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (17) 29.28/8.53 Obligation: 29.28/8.53 Lasso 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (18) Lasso2IRS (EQUIVALENT) 29.28/8.53 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.28/8.53 Generated rules. Obtained 76 rulesP rules: 29.28/8.53 f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 <= v412 && 1 <= v407 29.28/8.53 f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: v513 != 0 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: v513 = 0 29.28/8.53 f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) -> f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: 1 + v549 = v412 && 0 <= 1 + v549 29.28/8.53 f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_264(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_264(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) -> f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: v407 = 1 + v412 29.28/8.53 f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_266(v404, v405, v406, v412, 1, 0, v407, v412, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_266(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 != 0 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 = 0 29.28/8.53 f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) -> f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: 1 + v445 = v450 29.28/8.53 f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_264(v442, v443, v444, v450, 1, v512, v445, v450, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) -> f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: v548 = 1 + v450 && 2 <= v548 29.28/8.53 f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_266(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_69 -> f_70(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 29.28/8.53 f_70(v1, v2, 3, 1, 4) -> f_71(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 29.28/8.53 f_71(v1, v3, v2, v4, 3, 1, 4) -> f_72(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_72(v1, v3, v2, v4, 0, 3, 1, 4) -> f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 29.28/8.53 f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 <= v5 29.28/8.53 f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_85(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: v7 = 0 29.28/8.53 f_85(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_87(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: 0 = 0 29.28/8.53 f_87(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_89(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_89(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_91(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: 0 = 0 29.28/8.53 f_91(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_93(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: v9 = 1 + v5 && 1 <= v9 29.28/8.53 f_93(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_95(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_95(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_97(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_97(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_138(v1, v3, v5, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_138(v39, v40, v41, v42, 1, 0, v45, v46, v47, 3, 4) -> f_180(v39, v40, v41, v42, 1, 0, v45, v46, v47, 3, 4) :|: TRUE 29.28/8.53 f_180(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) -> f_183(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_183(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) -> f_186(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_186(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_189(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_189(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_191(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_191(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_194(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_194(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) -> f_197(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) :|: v167 != 0 29.28/8.53 f_197(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) -> f_201(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_201(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_204(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 f_204(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_208(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_208(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_212(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: 1 + v115 = v118 29.28/8.53 f_212(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_216(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 f_216(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_220(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 f_220(v112, v113, v114, v118, 1, v167, v115, v119, v120, 0, 3, 4) -> f_264(v112, v113, v114, v118, 1, v167, v115, v118, v115, v119, v120, 0, 3, 4) :|: TRUE 29.28/8.53 Combined rules. Obtained 8 rulesP rules: 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 < 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, v450:0, 1, 0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_279(v442:0, v443:0, v444:0, 1 + v450:0, 1, v512:1, 0, v448:0, v449:0, v450:0, v451:0, v452:0, 3, 4) :|: v450:0 > 0 29.28/8.53 f_69 -> f_267(v1:0, v3:0, v5:0, 1 + v5:0, 1, v167:0, v5:0, 1 + v5:0, v5:0, 3 + v1:0, 3 + v3:0, 0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > -1 && v167:0 < 0 29.28/8.53 f_69 -> f_267(v1:0, v3:0, v5:0, 1 + v5:0, 1, v167:0, v5:0, 1 + v5:0, v5:0, 3 + v1:0, 3 + v3:0, 0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > -1 && v167:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 < 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 > 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, 1 + v412:0, 1, v409:0, v410:0, v411:0, v412:0, v413:0, v414:0, 0, 3, 4) -> f_279(v404:0, v405:0, v406:0, 1 + v412:0, 1, v512:0, 0, 1 + v412:0, v412:0, v412:0, v413:0, v414:0, 3, 4) :|: v412:0 > -1 29.28/8.53 Filtered unneeded arguments: 29.28/8.53 f_267(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_267(x4, x9) 29.28/8.53 f_279(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_279(x4, x6, x10) 29.28/8.53 Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_69 -> f_267(1 + v5:0, v5:0) :|: v5:0 > -1 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 < 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 > 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (19) 29.28/8.53 Obligation: 29.28/8.53 Rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_69 -> f_267(1 + v5:0, v5:0) :|: v5:0 > -1 29.28/8.53 f_279(x, x1, x2) -> f_267(1 + x2, x2) :|: x1 < 0 && x = 1 + x2 29.28/8.53 f_279(x3, x4, x5) -> f_267(1 + x5, x5) :|: x4 > 0 && x3 = 1 + x5 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 Start term: f_69 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (20) IRS2T2 (EQUIVALENT) 29.28/8.53 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.28/8.53 29.28/8.53 (f_267_3,1) 29.28/8.53 (f_279_3,2) 29.28/8.53 (f_69_3,3) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (21) 29.28/8.53 Obligation: 29.28/8.53 START: 3; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := oldX1 - 1; 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX3 > -2 && oldX1 = 1 + oldX3); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX1 - 1; 29.28/8.53 x2 := oldX4; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX1 = 0); 29.28/8.53 x0 := 1 + oldX0; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX0; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 FROM: 3; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX3 > -1); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX4; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 < 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > -1 && oldX0 = 1 + oldX1); 29.28/8.53 x0 := 1 + oldX1; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX1; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (22) T2 (COMPLETE) 29.28/8.53 Found this recurrent set for cutpoint 6: oldX1 == 1 and oldX3 == 0 and x0 == 1 and x1 == 0 and x2 == 0 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (23) 29.28/8.53 NO 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (24) 29.28/8.53 Obligation: 29.28/8.53 Lasso 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (25) Lasso2IRS (EQUIVALENT) 29.28/8.53 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.28/8.53 Generated rules. Obtained 77 rulesP rules: 29.28/8.53 f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_269(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 <= v412 && 1 <= v407 29.28/8.53 f_271(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_274(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_277(v404, v405, v406, v412, 1, v409, v410, v411, v407, v413, v414, 0, 3, 4) -> f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: v513 != 0 29.28/8.53 f_280(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: v513 = 0 29.28/8.53 f_283(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_287(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_291(v404, v405, v406, v412, 1, v513, v410, v411, v407, v413, v414, 0, 3, 4) -> f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_295(v404, v405, v406, v412, 1, v513, v410, v411, v413, v414, 0, 3, 4) -> f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: 1 + v549 = v412 && 0 <= 1 + v549 29.28/8.53 f_299(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_303(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_307(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) -> f_264(v404, v405, v406, v412, 1, v513, v410, v411, v549, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_264(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) -> f_267(v404, v405, v406, v407, 1, v409, v410, v411, v412, v413, v414, 0, 3, 4) :|: TRUE 29.28/8.53 f_284(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_288(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_292(v404, v405, v406, v412, 1, 0, v410, v411, v407, v413, v414, 3, 4) -> f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) :|: 0 = 0 29.28/8.53 f_296(v404, v405, v406, v412, 1, 0, v411, v407, v413, v414, 3, 4) -> f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: v407 = 1 + v412 29.28/8.53 f_300(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_304(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_308(v404, v405, v406, v412, 1, 0, v407, v413, v414, 3, 4) -> f_266(v404, v405, v406, v412, 1, 0, v407, v412, v407, v413, v414, 3, 4) :|: TRUE 29.28/8.53 f_266(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_268(v442, v443, v444, v445, 1, 0, v448, v449, v450, v451, v452, 3, 4) -> f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_270(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_273(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_276(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 != 0 29.28/8.53 f_279(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: v512 = 0 29.28/8.53 f_281(v442, v443, v444, v450, 1, v512, 0, v448, v449, v445, v451, v452, 3, 4) -> f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_285(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_289(v442, v443, v444, v450, 1, v512, v448, v449, v445, v451, v452, 0, 3, 4) -> f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_293(v442, v443, v444, v450, 1, v512, v449, v445, v451, v452, 0, 3, 4) -> f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: 1 + v445 = v450 29.28/8.53 f_297(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_301(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_305(v442, v443, v444, v450, 1, v512, v445, v451, v452, 0, 3, 4) -> f_264(v442, v443, v444, v450, 1, v512, v445, v450, v445, v451, v452, 0, 3, 4) :|: TRUE 29.28/8.53 f_282(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_286(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_290(v442, v443, v444, v450, 1, 0, v448, v449, v445, v451, v452, 3, 4) -> f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) :|: 0 = 0 29.28/8.53 f_294(v442, v443, v444, v450, 1, 0, v448, v449, v451, v452, 3, 4) -> f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: v548 = 1 + v450 && 2 <= v548 29.28/8.53 f_298(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_302(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) :|: TRUE 29.28/8.53 f_306(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4, 2) -> f_266(v442, v443, v444, v450, 1, 0, v448, v449, v548, v451, v452, 3, 4) :|: TRUE 29.28/8.53 f_69 -> f_70(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 29.28/8.53 f_70(v1, v2, 3, 1, 4) -> f_71(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 29.28/8.53 f_71(v1, v3, v2, v4, 3, 1, 4) -> f_72(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_72(v1, v3, v2, v4, 0, 3, 1, 4) -> f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 29.28/8.53 f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 <= v5 29.28/8.53 f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_84(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: v7 != 0 29.28/8.53 f_84(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_86(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_86(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_88(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_88(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_90(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_90(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_92(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: 1 + v8 = v5 && 0 <= 1 + v8 29.28/8.53 f_92(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_94(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_94(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_96(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_96(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_98(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_98(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_143(v1, v3, v5, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_143(v75, v76, v77, v78, 1, v80, v81, v82, v83, 0, 3, 4) -> f_188(v75, v76, v77, v78, 1, v80, v81, v82, v83, 0, 3, 4) :|: TRUE 29.28/8.53 f_188(v151, v152, v153, v154, 1, v156, v157, v158, v159, 0, 3, 4) -> f_190(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_190(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_192(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 <= v157 && 1 <= v154 && 1 <= v153 29.28/8.53 f_192(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_195(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_195(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_199(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_199(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_203(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_203(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) -> f_207(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: v171 = 0 29.28/8.53 f_207(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_211(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: 0 = 0 29.28/8.53 f_211(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_215(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 f_215(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_219(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: 0 = 0 29.28/8.53 f_219(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_223(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: v154 = 1 + v157 29.28/8.53 f_223(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_226(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 f_226(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_229(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 f_229(v151, v152, v153, v157, 1, 0, v154, v158, v159, 3, 4) -> f_266(v151, v152, v153, v157, 1, 0, v154, v157, v154, v158, v159, 3, 4) :|: TRUE 29.28/8.53 Combined rules. Obtained 8 rulesP rules: 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 < 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, v407:0, 1, v409:0, v410:0, v411:0, 1 + v549:0, v413:0, v414:0, 0, 3, 4) -> f_267(v404:0, v405:0, v406:0, 1 + v549:0, 1, v513:0, v410:0, v411:0, v549:0, v413:0, v414:0, 0, 3, 4) :|: v407:0 > 0 && v549:0 > -2 && v513:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, v450:0, 1, 0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_279(v442:0, v443:0, v444:0, 1 + v450:0, 1, v512:1, 0, v448:0, v449:0, v450:0, v451:0, v452:0, 3, 4) :|: v450:0 > 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 < 0 29.28/8.53 f_279(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, 0, v448:0, v449:0, v445:0, v451:0, v452:0, 3, 4) -> f_267(v442:0, v443:0, v444:0, 1 + v445:0, 1, v512:0, v445:0, 1 + v445:0, v445:0, v451:0, v452:0, 0, 3, 4) :|: v512:0 > 0 29.28/8.53 f_267(v404:0, v405:0, v406:0, 1 + v412:0, 1, v409:0, v410:0, v411:0, v412:0, v413:0, v414:0, 0, 3, 4) -> f_279(v404:0, v405:0, v406:0, 1 + v412:0, 1, v512:0, 0, 1 + v412:0, v412:0, v412:0, v413:0, v414:0, 3, 4) :|: v412:0 > -1 29.28/8.53 f_69 -> f_279(v1:0, v3:0, 1 + v8:0, 1 + v8:0, 1, v512:0, 0, 1 + v8:0, v8:0, v8:0, 3 + v1:0, 3 + v3:0, 3, 4) :|: v8:0 > -1 && v3:0 > 0 && v1:0 > 0 && v7:0 < 0 29.28/8.53 f_69 -> f_279(v1:0, v3:0, 1 + v8:0, 1 + v8:0, 1, v512:0, 0, 1 + v8:0, v8:0, v8:0, 3 + v1:0, 3 + v3:0, 3, 4) :|: v8:0 > -1 && v3:0 > 0 && v1:0 > 0 && v7:0 > 0 29.28/8.53 Filtered unneeded arguments: 29.28/8.53 f_267(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_267(x4, x9) 29.28/8.53 f_279(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_279(x4, x6, x10) 29.28/8.53 Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 < 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_279(sum~cons_1~v445:0, v512:0, v445:0) -> f_267(1 + v445:0, v445:0) :|: v512:0 > 0 && sum~cons_1~v445:0 = 1 + v445:0 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 f_69 -> f_279(1 + v8:0, v512:0, v8:0) :|: v8:0 > -1 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (26) 29.28/8.53 Obligation: 29.28/8.53 Rules: 29.28/8.53 f_267(v407:0, sum~cons_1~v549:0) -> f_267(1 + v549:0, v549:0) :|: v407:0 > 0 && v549:0 > -2 && sum~cons_1~v549:0 = 1 + v549:0 29.28/8.53 f_279(v450:0, cons_0, v445:0) -> f_279(1 + v450:0, v512:1, v450:0) :|: v450:0 > 0 && cons_0 = 0 29.28/8.53 f_279(x, x1, x2) -> f_267(1 + x2, x2) :|: x1 < 0 && x = 1 + x2 29.28/8.53 f_279(x3, x4, x5) -> f_267(1 + x5, x5) :|: x4 > 0 && x3 = 1 + x5 29.28/8.53 f_267(sum~cons_1~v412:0, v412:0) -> f_279(1 + v412:0, v512:0, v412:0) :|: v412:0 > -1 && sum~cons_1~v412:0 = 1 + v412:0 29.28/8.53 f_69 -> f_279(1 + x6, x7, x6) :|: x6 > -1 29.28/8.53 Start term: f_69 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (27) IRS2T2 (EQUIVALENT) 29.28/8.53 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.28/8.53 29.28/8.53 (f_267_3,1) 29.28/8.53 (f_279_3,2) 29.28/8.53 (f_69_3,3) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (28) 29.28/8.53 Obligation: 29.28/8.53 START: 3; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := oldX1 - 1; 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX3 > -2 && oldX1 = 1 + oldX3); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX1 - 1; 29.28/8.53 x2 := oldX4; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX0 > 0 && oldX1 = 0); 29.28/8.53 x0 := 1 + oldX0; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX0; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 < 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > 0 && oldX0 = 1 + oldX2); 29.28/8.53 x0 := 1 + oldX2; 29.28/8.53 x1 := oldX2; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX1 > -1 && oldX0 = 1 + oldX1); 29.28/8.53 x0 := 1 + oldX1; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := oldX1; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 FROM: 3; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 oldX4 := nondet(); 29.28/8.53 assume(oldX3 > -1); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX4; 29.28/8.53 x2 := oldX3; 29.28/8.53 TO: 2; 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (29) 29.28/8.53 Obligation: 29.28/8.53 Lasso 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (30) Lasso2IRS (EQUIVALENT) 29.28/8.53 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.28/8.53 Generated rules. Obtained 35 rulesP rules: 29.28/8.53 f_190(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_192(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 <= v157 && 1 <= v154 && 1 <= v153 29.28/8.53 f_192(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_195(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_195(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_199(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_199(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) -> f_203(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_203(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) -> f_206(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) :|: v171 != 0 29.28/8.53 f_206(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) -> f_210(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_210(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) -> f_214(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_214(v151, v152, v153, v157, 1, v171, v154, v158, v159, 0, 3, 4) -> f_218(v151, v152, v153, v157, 1, v171, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_218(v151, v152, v153, v157, 1, v171, v158, v159, 0, 3, 4) -> f_222(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) :|: 1 + v201 = v157 && 0 <= 1 + v201 29.28/8.53 f_222(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) -> f_225(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_225(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) -> f_228(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_228(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) -> f_231(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_231(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) -> f_188(v151, v152, v153, v157, 1, v171, v201, v158, v159, 0, 3, 4) :|: TRUE 29.28/8.53 f_188(v151, v152, v153, v154, 1, v156, v157, v158, v159, 0, 3, 4) -> f_190(v151, v152, v153, v157, 1, v156, v154, v158, v159, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_69 -> f_70(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 29.28/8.53 f_70(v1, v2, 3, 1, 4) -> f_71(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 29.28/8.53 f_71(v1, v3, v2, v4, 3, 1, 4) -> f_72(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_72(v1, v3, v2, v4, 0, 3, 1, 4) -> f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 29.28/8.53 f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 <= v5 29.28/8.53 f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_84(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: v7 != 0 29.28/8.53 f_84(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_86(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_86(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_88(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_88(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_90(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_90(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_92(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: 1 + v8 = v5 && 0 <= 1 + v8 29.28/8.53 f_92(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_94(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_94(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_96(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_96(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_98(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_98(v1, v3, v5, 1, v7, v8, v2, v4, 0, 3, 4) -> f_143(v1, v3, v5, v5, 1, v7, v8, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_143(v75, v76, v77, v78, 1, v80, v81, v82, v83, 0, 3, 4) -> f_188(v75, v76, v77, v78, 1, v80, v81, v82, v83, 0, 3, 4) :|: TRUE 29.28/8.53 Combined rules. Obtained 4 rulesP rules: 29.28/8.53 f_190(v151:0, v152:0, v153:0, 1 + v201:0, 1, v156:0, v154:0, v158:0, v159:0, 0, 3, 4) -> f_190(v151:0, v152:0, v153:0, v201:0, 1, v171:0, 1 + v201:0, v158:0, v159:0, 0, 3, 4) :|: v154:0 > 0 && v201:0 > -2 && v153:0 > 0 && v171:0 < 0 29.28/8.53 f_190(v151:0, v152:0, v153:0, 1 + v201:0, 1, v156:0, v154:0, v158:0, v159:0, 0, 3, 4) -> f_190(v151:0, v152:0, v153:0, v201:0, 1, v171:0, 1 + v201:0, v158:0, v159:0, 0, 3, 4) :|: v154:0 > 0 && v201:0 > -2 && v153:0 > 0 && v171:0 > 0 29.28/8.53 f_69 -> f_190(v1:0, v3:0, 1 + v8:0, v8:0, 1, v7:0, 1 + v8:0, 3 + v1:0, 3 + v3:0, 0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v8:0 > -2 && v7:0 < 0 29.28/8.53 f_69 -> f_190(v1:0, v3:0, 1 + v8:0, v8:0, 1, v7:0, 1 + v8:0, 3 + v1:0, 3 + v3:0, 0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v8:0 > -2 && v7:0 > 0 29.28/8.53 Filtered unneeded arguments: 29.28/8.53 f_190(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) -> f_190(x3, x4, x7) 29.28/8.53 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 29.28/8.53 f_190(v153:0, sum~cons_1~v201:0, v154:0) -> f_190(v153:0, v201:0, 1 + v201:0) :|: v201:0 > -2 && v153:0 > 0 && v154:0 > 0 && sum~cons_1~v201:0 = 1 + v201:0 29.28/8.53 f_69 -> f_190(1 + v8:0, v8:0, 1 + v8:0) :|: v8:0 > -2 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (31) 29.28/8.53 Obligation: 29.28/8.53 Rules: 29.28/8.53 f_190(v153:0, sum~cons_1~v201:0, v154:0) -> f_190(v153:0, v201:0, 1 + v201:0) :|: v201:0 > -2 && v153:0 > 0 && v154:0 > 0 && sum~cons_1~v201:0 = 1 + v201:0 29.28/8.53 f_69 -> f_190(1 + v8:0, v8:0, 1 + v8:0) :|: v8:0 > -2 29.28/8.53 Start term: f_69 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (32) IRS2T2 (EQUIVALENT) 29.28/8.53 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.28/8.53 29.28/8.53 (f_190_3,1) 29.28/8.53 (f_69_3,2) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (33) 29.28/8.53 Obligation: 29.28/8.53 START: 2; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := oldX1 - 1; 29.28/8.53 assume(oldX3 > -2 && oldX0 > 0 && oldX2 > 0 && oldX1 = 1 + oldX3); 29.28/8.53 x0 := oldX0; 29.28/8.53 x1 := oldX1 - 1; 29.28/8.53 x2 := 1 + oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := x1; 29.28/8.53 oldX2 := x2; 29.28/8.53 oldX3 := nondet(); 29.28/8.53 assume(oldX3 > -2); 29.28/8.53 x0 := 1 + oldX3; 29.28/8.53 x1 := oldX3; 29.28/8.53 x2 := 1 + oldX3; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (34) T2 (EQUIVALENT) 29.28/8.53 Initially, performed program simplifications using lexicographic rank functions: 29.28/8.53 * Removed transitions 1, 3, 4 using the following rank functions: 29.28/8.53 - Rank function 1: 29.28/8.53 RF for loc. 5: 1+2*x1 29.28/8.53 RF for loc. 6: 2*x1 29.28/8.53 Bound for (chained) transitions 3: 0 29.28/8.53 Bound for (chained) transitions 4: 0 29.28/8.53 - Rank function 2: 29.28/8.53 RF for loc. 5: 0 29.28/8.53 RF for loc. 6: -1 29.28/8.53 Bound for (chained) transitions 1: 0 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (35) 29.28/8.53 YES 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (36) 29.28/8.53 Obligation: 29.28/8.53 Lasso 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (37) Lasso2IRS (EQUIVALENT) 29.28/8.53 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.28/8.53 Generated rules. Obtained 33 rulesP rules: 29.28/8.53 f_183(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) -> f_186(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_186(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_189(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_189(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_191(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_191(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_194(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_194(v112, v113, v114, v118, 1, v167, 0, v115, v119, v120, 3, 4) -> f_198(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: v167 = 0 29.28/8.53 f_198(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_202(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_202(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_205(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_205(v112, v113, v114, v118, 1, 0, v115, v119, v120, 3, 4) -> f_209(v112, v113, v114, v118, 1, 0, v119, v120, 3, 4) :|: 0 = 0 29.28/8.53 f_209(v112, v113, v114, v118, 1, 0, v119, v120, 3, 4) -> f_213(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4, 2) :|: v172 = 1 + v118 && 2 <= v172 29.28/8.53 f_213(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4, 2) -> f_217(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4, 2) :|: TRUE 29.28/8.53 f_217(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4, 2) -> f_221(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4, 2) :|: TRUE 29.28/8.53 f_221(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4, 2) -> f_180(v112, v113, v114, v118, 1, 0, v172, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_180(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) -> f_183(v112, v113, v114, v115, 1, 0, v118, v119, v120, 3, 4) :|: TRUE 29.28/8.53 f_69 -> f_70(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 29.28/8.53 f_70(v1, v2, 3, 1, 4) -> f_71(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 29.28/8.53 f_71(v1, v3, v2, v4, 3, 1, 4) -> f_72(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_72(v1, v3, v2, v4, 0, 3, 1, 4) -> f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_73(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_74(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 29.28/8.53 f_75(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 29.28/8.53 f_76(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 <= v5 29.28/8.53 f_77(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: 0 = 0 29.28/8.53 f_79(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_81(v1, v3, v5, 1, v2, v4, 0, 3, 4) -> f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) :|: TRUE 29.28/8.53 f_83(v1, v3, v5, 1, v7, v2, v4, 0, 3, 4) -> f_85(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: v7 = 0 29.28/8.53 f_85(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_87(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: 0 = 0 29.28/8.53 f_87(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_89(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_89(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_91(v1, v3, v5, 1, 0, v2, v4, 3, 4) :|: 0 = 0 29.28/8.53 f_91(v1, v3, v5, 1, 0, v2, v4, 3, 4) -> f_93(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: v9 = 1 + v5 && 1 <= v9 29.28/8.53 f_93(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_95(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_95(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_97(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_97(v1, v3, v5, 1, 0, v9, v2, v4, 3, 4) -> f_138(v1, v3, v5, v5, 1, 0, v9, v2, v4, 3, 4) :|: TRUE 29.28/8.53 f_138(v39, v40, v41, v42, 1, 0, v45, v46, v47, 3, 4) -> f_180(v39, v40, v41, v42, 1, 0, v45, v46, v47, 3, 4) :|: TRUE 29.28/8.53 Combined rules. Obtained 2 rulesP rules: 29.28/8.53 f_183(v112:0, v113:0, v114:0, v115:0, 1, 0, v118:0, v119:0, v120:0, 3, 4) -> f_183(v112:0, v113:0, v114:0, v118:0, 1, 0, 1 + v118:0, v119:0, v120:0, 3, 4) :|: v118:0 > 0 29.28/8.53 f_69 -> f_183(v1:0, v3:0, v5:0, v5:0, 1, 0, 1 + v5:0, 3 + v1:0, 3 + v3:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > -1 29.28/8.53 Filtered unneeded arguments: 29.28/8.53 f_183(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) -> f_183(x7) 29.28/8.53 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 29.28/8.53 f_183(v118:0) -> f_183(1 + v118:0) :|: v118:0 > 0 29.28/8.53 f_69 -> f_183(1 + v5:0) :|: v5:0 > -1 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (38) 29.28/8.53 Obligation: 29.28/8.53 Rules: 29.28/8.53 f_183(v118:0) -> f_183(1 + v118:0) :|: v118:0 > 0 29.28/8.53 f_69 -> f_183(1 + v5:0) :|: v5:0 > -1 29.28/8.53 Start term: f_69 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (39) IRS2T2 (EQUIVALENT) 29.28/8.53 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.28/8.53 29.28/8.53 (f_183_1,1) 29.28/8.53 (f_69_1,2) 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (40) 29.28/8.53 Obligation: 29.28/8.53 START: 2; 29.28/8.53 29.28/8.53 FROM: 1; 29.28/8.53 oldX0 := x0; 29.28/8.53 assume(oldX0 > 0); 29.28/8.53 x0 := 1 + oldX0; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 FROM: 2; 29.28/8.53 oldX0 := x0; 29.28/8.53 oldX1 := nondet(); 29.28/8.53 assume(oldX1 > -1); 29.28/8.53 x0 := 1 + oldX1; 29.28/8.53 TO: 1; 29.28/8.53 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (41) T2 (COMPLETE) 29.28/8.53 Found this recurrent set for cutpoint 5: 0 <= oldX1 and 1 <= x0 and oldX1-x0 <= -1 and 1 <= oldX1+x0 and -x0+1 <= 0 29.28/8.53 29.28/8.53 ---------------------------------------- 29.28/8.53 29.28/8.53 (42) 29.28/8.53 NO 29.41/8.59 EOF