/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 181 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 8915 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 155 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 2 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 92 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 3 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 84 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [EQUIVALENT, 2 ms] (27) YES (28) LLVM Symbolic Execution SCC (29) SCC2IRS [SOUND, 40 ms] (30) IntTRS (31) IRS2T2 [EQUIVALENT, 0 ms] (32) T2IntSys (33) T2 [EQUIVALENT, 2 ms] (34) YES (35) LLVM Symbolic Execution SCC (36) SCC2IRS [SOUND, 121 ms] (37) IntTRS (38) IRS2T2 [EQUIVALENT, 0 ms] (39) T2IntSys (40) T2 [EQUIVALENT, 3 ms] (41) YES (42) LLVM Symbolic Execution SCC (43) SCC2IRS [SOUND, 57 ms] (44) IntTRS (45) IRS2T2 [EQUIVALENT, 0 ms] (46) T2IntSys (47) T2 [EQUIVALENT, 282 ms] (48) YES (49) LLVM Symbolic Execution SCC (50) SCC2IRS [SOUND, 122 ms] (51) IntTRS (52) IRS2T2 [EQUIVALENT, 0 ms] (53) T2IntSys (54) T2 [EQUIVALENT, 4 ms] (55) YES (56) LLVM Symbolic Execution SCC (57) SCC2IRS [SOUND, 46 ms] (58) IntTRS (59) IRS2T2 [EQUIVALENT, 0 ms] (60) T2IntSys (61) T2 [EQUIVALENT, 2 ms] (62) YES (63) LLVM Symbolic Execution SCC (64) SCC2IRS [SOUND, 35 ms] (65) IntTRS (66) IRS2T2 [EQUIVALENT, 0 ms] (67) T2IntSys (68) T2 [EQUIVALENT, 1 ms] (69) YES (70) LLVM Symbolic Execution SCC (71) SCC2IRS [SOUND, 95 ms] (72) IntTRS (73) IRS2T2 [EQUIVALENT, 0 ms] (74) T2IntSys (75) T2 [EQUIVALENT, 2 ms] (76) YES (77) LLVM Symbolic Execution SCC (78) SCC2IRS [SOUND, 44 ms] (79) IntTRS (80) IRS2T2 [EQUIVALENT, 0 ms] (81) T2IntSys (82) T2 [EQUIVALENT, 2 ms] (83) YES (84) LLVM Symbolic Execution SCC (85) SCC2IRS [SOUND, 55 ms] (86) IntTRS (87) IRS2T2 [EQUIVALENT, 0 ms] (88) T2IntSys (89) T2 [EQUIVALENT, 4 ms] (90) YES (91) LLVM Symbolic Execution SCC (92) SCC2IRS [SOUND, 41 ms] (93) IntTRS (94) IRS2T2 [EQUIVALENT, 0 ms] (95) T2IntSys (96) T2 [EQUIVALENT, 2 ms] (97) YES (98) LLVM Symbolic Execution SCC (99) SCC2IRS [SOUND, 31 ms] (100) IntTRS (101) IRS2T2 [EQUIVALENT, 0 ms] (102) T2IntSys (103) T2 [EQUIVALENT, 4 ms] (104) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "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" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %x %3 = call i32 @__VERIFIER_nondet_int() store %3, %y br %4 4: %5 = load %x %6 = icmp ne %5 0 br %6, %7, %10 7: %8 = load %y %9 = icmp sgt %8 0 br %10 10: %11 = phi [0, %4], [%9, %7] br %11, %12, %38 12: %13 = load %x %14 = icmp sgt %13 0 br %14, %15, %26 15: %16 = call i32 @__VERIFIER_nondet_int() %17 = icmp ne %16 0 br %17, %18, %22 18: %19 = load %x %20 = sub %19 1 store %20, %x %21 = call i32 @__VERIFIER_nondet_int() store %21, %y br %25 22: %23 = load %y %24 = sub %23 1 store %24, %y br %25 25: br %37 26: %27 = call i32 @__VERIFIER_nondet_int() %28 = icmp ne %27 0 br %28, %29, %32 29: %30 = load %x %31 = add %30 1 store %31, %x br %36 32: %33 = load %y %34 = sub %33 1 store %34, %y %35 = call i32 @__VERIFIER_nondet_int() store %35, %x br %36 36: br %37 37: br %4 38: %39 = load %1 ret %39 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 14 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 56 rulesP rules: f_2273(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55635, v55636, v55637, v55638, 3, 2, 4) -> f_2275(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55635, v55636, v55637, v55638, 3, 2, 4) :|: 1 + v55830 = v55622 && 0 <= v55830 f_2275(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55635, v55636, v55637, v55638, 3, 2, 4) -> f_2277(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55635, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2277(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55635, v55636, v55637, v55638, 3, 2, 4) -> f_2279(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2279(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2282(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2282(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2284(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2284(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2286(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2286(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2288(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2288(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55830, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2290(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2290(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2292(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) :|: v55830 != 0 && 2 <= v55622 && 3 <= v55630 f_2292(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2295(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2295(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2299(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2299(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55624, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55834, v55636, v55637, v55638, 3, 2, 4) -> f_2303(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2303(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) -> f_2307(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) :|: 0 < v55834 f_2307(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) -> f_2312(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2312(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) -> f_2316(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2316(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) -> f_2319(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2319(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, v55622, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55636, v55637, v55638, 3, 2, 4) -> f_2322(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2322(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2325(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2325(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2328(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2328(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2331(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2331(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2334(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: v59678 != 0 f_2331(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2335(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: v59678 = 0 f_2334(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2336(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2336(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2338(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2338(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2270(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v59678, v55632, v55633, v55622, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2270(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55634, v55635, v55636, v55637, v55638, 3, 2, 4) -> f_2273(v55617, v55618, v55619, v55620, v55621, v55622, 1, v55624, 0, v55626, v55627, v55628, v55629, v55630, v55631, v55632, v55633, v55635, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2335(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2337(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: 0 = 0 f_2337(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2339(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2339(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55636, v55637, v55638, 3, 2, 4) -> f_2272(v55617, v55618, v55619, v55620, v55621, v55830, 1, v55834, 0, v55626, v55627, v55628, v55629, v55630, v55632, v55633, v55622, v55834, v55636, v55637, v55638, 3, 2, 4) :|: TRUE f_2272(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55823, v55824, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) -> f_2274(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55824, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) :|: 0 = 0 f_2274(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55824, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) -> f_2276(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55831, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) :|: 1 + v55831 = v55816 && 0 <= v55831 f_2276(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55831, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) -> f_2278(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55831, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) :|: TRUE f_2278(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55831, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) -> f_2280(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55831, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) :|: TRUE f_2280(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55831, v55825, v55826, v55827, v55828, v55829, 3, 2, 4) -> f_2281(v55809, v55810, v55811, v55812, v55813, v55814, 1, v55816, 0, v55818, v55819, v55820, v55821, v55822, v55825, v55826, v55831, v55827, v55828, v55829, 3, 2, 4) :|: TRUE f_2281(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) -> f_2283(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2283(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) -> f_2285(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2285(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) -> f_2287(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2287(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) -> f_2289(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2289(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) -> f_2291(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2291(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56057, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56066, v56067, v56068, v56069, 3, 2, 4) -> f_2294(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2294(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2297(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 < v56066 && 2 <= v56057 && 2 <= v56065 f_2297(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2301(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2301(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2305(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2305(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2310(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2310(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2314(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2314(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2318(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2318(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2321(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2321(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2324(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2324(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2326(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: v59531 != 0 f_2324(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2327(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: v59531 = 0 f_2326(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2329(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2329(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2332(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2332(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2270(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v59531, v56057, v56066, v56064, v56065, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2327(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2330(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: 0 = 0 f_2330(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2333(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) :|: TRUE f_2333(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56064, v56065, v56057, v56067, v56068, v56069, 3, 2, 4) -> f_2272(v56050, v56051, v56052, v56053, v56054, v56055, 1, v56066, 0, v56059, v56060, v56061, v56062, v56063, v56057, v56066, v56064, v56065, v56067, v56068, v56069, 3, 2, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_2324(v56050:0, v56051:0, v56052:0, v56053:0, v56054:0, v56055:0, 1, 1 + v55831:0, 0, v56059:0, v56060:0, v56061:0, v56062:0, v56063:0, 0, v56064:0, v56065:0, v56057:0, v56067:0, v56068:0, v56069:0, 3, 2, 4) -> f_2324(v56050:0, v56051:0, v56052:0, v56053:0, v56054:0, v56055:0, 1, v55831:0, 0, v56059:0, v56060:0, v56061:0, v56062:0, v56063:0, v59531:1, v56064:0, v56065:0, 1 + v55831:0, v56067:0, v56068:0, v56069:0, 3, 2, 4) :|: v55831:0 > 0 && v56065:0 > 1 f_2324(v56050:0, v56051:0, v56052:0, v56053:0, v56054:0, v56055:0, 1, v56066:0, 0, v56059:0, v56060:0, v56061:0, v56062:0, v56063:0, v59531:0, v56064:0, v56065:0, v56057:0, v56067:0, v56068:0, v56069:0, 3, 2, 4) -> f_2273(v56050:0, v56051:0, v56052:0, v56053:0, v56054:0, v56055:0, 1, v56066:0, 0, v56059:0, v56060:0, v56061:0, v56062:0, v56063:0, v59531:0, v56057:0, v56066:0, v56065:0, v56067:0, v56068:0, v56069:0, 3, 2, 4) :|: v59531:0 < 0 f_2324(v56050:0, v56051:0, v56052:0, v56053:0, v56054:0, v56055:0, 1, v56066:0, 0, v56059:0, v56060:0, v56061:0, v56062:0, v56063:0, v59531:0, v56064:0, v56065:0, v56057:0, v56067:0, v56068:0, v56069:0, 3, 2, 4) -> f_2273(v56050:0, v56051:0, v56052:0, v56053:0, v56054:0, v56055:0, 1, v56066:0, 0, v56059:0, v56060:0, v56061:0, v56062:0, v56063:0, v59531:0, v56057:0, v56066:0, v56065:0, v56067:0, v56068:0, v56069:0, 3, 2, 4) :|: v59531:0 > 0 f_2273(v55617:0, v55618:0, v55619:0, v55620:0, v55621:0, 1 + v55830:0, 1, v55624:0, 0, v55626:0, v55627:0, v55628:0, v55629:0, v55630:0, v55631:0, v55632:0, v55633:0, v55635:0, v55636:0, v55637:0, v55638:0, 3, 2, 4) -> f_2324(v55617:0, v55618:0, v55619:0, v55620:0, v55621:0, v55830:0, 1, v55831:0, 0, v55626:0, v55627:0, v55628:0, v55629:0, v55630:0, v59531:0, 1 + v55830:0, 1 + v55831:0, 1 + v55831:0, v55636:0, v55637:0, v55638:0, 3, 2, 4) :|: v55830:0 > 0 && v55831:0 > 0 && v55630:0 > 2 f_2273(v55617:0, v55618:0, v55619:0, v55620:0, v55621:0, 1 + v55830:0, 1, v55624:0, 0, v55626:0, v55627:0, v55628:0, v55629:0, v55630:0, v55631:0, v55632:0, v55633:0, v55635:0, v55636:0, v55637:0, v55638:0, 3, 2, 4) -> f_2273(v55617:0, v55618:0, v55619:0, v55620:0, v55621:0, v55830:0, 1, v55834:0, 0, v55626:0, v55627:0, v55628:0, v55629:0, v55630:0, v59678:0, v55632:0, v55633:0, v55834:0, v55636:0, v55637:0, v55638:0, 3, 2, 4) :|: v55830:0 > 0 && v55630:0 > 2 && v59678:0 < 0 && v55834:0 > 0 f_2273(v55617:0, v55618:0, v55619:0, v55620:0, v55621:0, 1 + v55830:0, 1, v55624:0, 0, v55626:0, v55627:0, v55628:0, v55629:0, v55630:0, v55631:0, v55632:0, v55633:0, v55635:0, v55636:0, v55637:0, v55638:0, 3, 2, 4) -> f_2273(v55617:0, v55618:0, v55619:0, v55620:0, v55621:0, v55830:0, 1, v55834:0, 0, v55626:0, v55627:0, v55628:0, v55629:0, v55630:0, v59678:0, v55632:0, v55633:0, v55834:0, v55636:0, v55637:0, v55638:0, 3, 2, 4) :|: v55830:0 > 0 && v55630:0 > 2 && v59678:0 > 0 && v55834:0 > 0 Filtered unneeded arguments: f_2324(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) -> f_2324(x6, x8, x14, x15, x17) f_2273(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) -> f_2273(x6, x14) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_2324(v56055:0, sum~cons_1~v55831:0, v56063:0, cons_0, v56065:0) -> f_2324(v56055:0, v55831:0, v56063:0, v59531:1, v56065:0) :|: v55831:0 > 0 && v56065:0 > 1 && sum~cons_1~v55831:0 = 1 + v55831:0 && cons_0 = 0 f_2324(v56055:0, v56066:0, v56063:0, v59531:0, v56065:0) -> f_2273(v56055:0, v56063:0) :|: v59531:0 < 0 f_2324(v56055:0, v56066:0, v56063:0, v59531:0, v56065:0) -> f_2273(v56055:0, v56063:0) :|: v59531:0 > 0 f_2273(sum~cons_1~v55830:0, v55630:0) -> f_2324(v55830:0, v55831:0, v55630:0, v59531:0, 1 + v55831:0) :|: v55831:0 > 0 && v55630:0 > 2 && v55830:0 > 0 && sum~cons_1~v55830:0 = 1 + v55830:0 f_2273(sum~cons_1~v55830:0, v55630:0) -> f_2273(v55830:0, v55630:0) :|: v55830:0 > 0 && v55630:0 > 2 && sum~cons_1~v55830:0 = 1 + v55830:0 ---------------------------------------- (9) Obligation: Rules: f_2324(v56055:0, sum~cons_1~v55831:0, v56063:0, cons_0, v56065:0) -> f_2324(v56055:0, v55831:0, v56063:0, v59531:1, v56065:0) :|: v55831:0 > 0 && v56065:0 > 1 && sum~cons_1~v55831:0 = 1 + v55831:0 && cons_0 = 0 f_2324(x, x1, x2, x3, x4) -> f_2273(x, x2) :|: x3 < 0 f_2324(x5, x6, x7, x8, x9) -> f_2273(x5, x7) :|: x8 > 0 f_2273(x10, x11) -> f_2324(x12, x13, x11, x14, 1 + x13) :|: x13 > 0 && x11 > 2 && x12 > 0 && x10 = 1 + x12 f_2273(sum~cons_1~v55830:0, v55630:0) -> f_2273(v55830:0, v55630:0) :|: v55830:0 > 0 && v55630:0 > 2 && sum~cons_1~v55830:0 = 1 + v55830:0 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_2324_5,1) (f_2273_5,2) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; oldX6 := nondet(); assume(oldX5 > 0 && oldX4 > 1 && oldX1 = 1 + oldX5 && oldX3 = 0); x0 := oldX0; x1 := oldX1 - 1; x2 := oldX2; x3 := oldX6; x4 := oldX4; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); oldX6 := nondet(); oldX7 := nondet(); assume(oldX3 < 0); x0 := oldX0; x1 := oldX2; x2 := oldX5; x3 := oldX6; x4 := oldX7; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); oldX6 := nondet(); oldX7 := nondet(); assume(oldX3 > 0); x0 := oldX0; x1 := oldX2; x2 := oldX5; x3 := oldX6; x4 := oldX7; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX0 - 1; oldX6 := nondet(); oldX7 := nondet(); assume(oldX6 > 0 && oldX1 > 2 && oldX5 > 0 && oldX0 = 1 + oldX5); x0 := oldX0 - 1; x1 := oldX6; x2 := oldX1; x3 := oldX7; x4 := 1 + oldX6; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX0 - 1; oldX6 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX5 > 0 && oldX1 > 2 && oldX0 = 1 + oldX5); x0 := oldX0 - 1; x1 := oldX1; x2 := oldX6; x3 := oldX7; x4 := oldX8; TO: 2; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 7, 17, 20, 21 using the following rank functions: - Rank function 1: RF for loc. 6: 2+3*x0 RF for loc. 7: 1+3*x0 RF for loc. 8: 2+3*x0 RF for loc. 12: 3*x0 Bound for (chained) transitions 20: 6 Bound for (chained) transitions 21: 6 - Rank function 2: RF for loc. 6: 1 RF for loc. 7: 0 RF for loc. 8: 1 RF for loc. 12: -1 Bound for (chained) transitions 6: 1 Bound for (chained) transitions 7: 1 Bound for (chained) transitions 17: 0 - Rank function 3: RF for loc. 6: 1+2*x1 RF for loc. 8: 2*x1 Bound for (chained) transitions 5: 4 - Rank function 4: RF for loc. 6: 0 RF for loc. 8: -1 Bound for (chained) transitions 2: 0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 25 rulesP rules: f_2140(v46044, v46045, v46046, v46047, v46048, v46049, 1, v46051, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46059, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2143(v46044, v46045, v46046, v46047, v46048, v46049, 1, v46051, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46059, v46060, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2143(v46044, v46045, v46046, v46047, v46048, v46049, 1, v46051, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46059, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2146(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2146(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2149(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) :|: v46059 != 0 && 2 <= v46049 && 2 <= v46057 f_2149(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2152(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2152(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2155(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2155(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46051, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2158(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2158(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) -> f_2162(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) :|: 0 < v46060 f_2162(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) -> f_2167(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2167(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) -> f_2171(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2171(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) -> f_2175(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2175(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, v46049, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46061, v46062, v46063, 3, 2, 4) -> f_2179(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46049, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2179(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2183(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46049, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2183(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2186(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46049, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2186(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2188(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2188(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2190(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) :|: v48920 != 0 f_2190(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2193(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2193(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2196(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2196(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46049, v46061, v46062, v46063, 3, 2, 4) -> f_2199(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46061, v46062, v46063, 3, 2, 4) :|: 0 = 0 f_2199(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v46061, v46062, v46063, 3, 2, 4) -> f_2203(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v46061, v46062, v46063, 3, 2, 4) :|: 1 + v49790 = v46059 && 0 <= v49790 f_2203(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v46061, v46062, v46063, 3, 2, 4) -> f_2207(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2207(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v46061, v46062, v46063, 3, 2, 4) -> f_2211(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2211(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) -> f_2215(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2215(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) -> f_2220(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2220(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) -> f_2137(v46044, v46045, v46046, v46047, v46048, v46059, 1, v46060, 0, v46053, v46054, v46055, v46056, v46057, v48920, v49790, v50389, v46061, v46062, v46063, 3, 2, 4) :|: TRUE f_2137(v46044, v46045, v46046, v46047, v46048, v46049, 1, v46051, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46059, v46060, v46061, v46062, v46063, 3, 2, 4) -> f_2140(v46044, v46045, v46046, v46047, v46048, v46049, 1, v46051, 0, v46053, v46054, v46055, v46056, v46057, v46058, v46059, v46060, v46061, v46062, v46063, 3, 2, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_2140(v46044:0, v46045:0, v46046:0, v46047:0, v46048:0, v46049:0, 1, v46051:0, 0, v46053:0, v46054:0, v46055:0, v46056:0, v46057:0, v46058:0, 1 + v49790:0, v46060:0, v46061:0, v46062:0, v46063:0, 3, 2, 4) -> f_2140(v46044:0, v46045:0, v46046:0, v46047:0, v46048:0, 1 + v49790:0, 1, v46060:0, 0, v46053:0, v46054:0, v46055:0, v46056:0, v46057:0, v48920:0, v49790:0, v50389:0, v46061:0, v46062:0, v46063:0, 3, 2, 4) :|: v46049:0 > 1 && v49790:0 > -1 && v46057:0 > 1 && v46060:0 > 0 && v48920:0 < 0 f_2140(v46044:0, v46045:0, v46046:0, v46047:0, v46048:0, v46049:0, 1, v46051:0, 0, v46053:0, v46054:0, v46055:0, v46056:0, v46057:0, v46058:0, 1 + v49790:0, v46060:0, v46061:0, v46062:0, v46063:0, 3, 2, 4) -> f_2140(v46044:0, v46045:0, v46046:0, v46047:0, v46048:0, 1 + v49790:0, 1, v46060:0, 0, v46053:0, v46054:0, v46055:0, v46056:0, v46057:0, v48920:0, v49790:0, v50389:0, v46061:0, v46062:0, v46063:0, 3, 2, 4) :|: v46049:0 > 1 && v49790:0 > -1 && v46057:0 > 1 && v46060:0 > 0 && v48920:0 > 0 Filtered unneeded arguments: f_2140(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23) -> f_2140(x6, x14, x16, x17) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_2140(v46049:0, v46057:0, sum~cons_1~v49790:0, v46060:0) -> f_2140(1 + v49790:0, v46057:0, v49790:0, v50389:0) :|: v49790:0 > -1 && v46049:0 > 1 && v46060:0 > 0 && v46057:0 > 1 && sum~cons_1~v49790:0 = 1 + v49790:0 ---------------------------------------- (16) Obligation: Rules: f_2140(v46049:0, v46057:0, sum~cons_1~v49790:0, v46060:0) -> f_2140(1 + v49790:0, v46057:0, v49790:0, v50389:0) :|: v49790:0 > -1 && v46049:0 > 1 && v46060:0 > 0 && v46057:0 > 1 && sum~cons_1~v49790:0 = 1 + v49790:0 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_2140_4,1) ---------------------------------------- (18) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX2 - 1; oldX5 := nondet(); assume(oldX4 > -1 && oldX0 > 1 && oldX3 > 0 && oldX1 > 1 && oldX2 = 1 + oldX4); x0 := 1 + oldX4; x1 := oldX1; x2 := oldX2 - 1; x3 := oldX5; TO: 1; ---------------------------------------- (19) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x2 RF for loc. 6: 2*x2 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 22 rulesP rules: f_2112(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) -> f_2116(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2116(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) -> f_2120(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2120(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) -> f_2124(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2124(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) -> f_2128(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2128(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) -> f_2131(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2131(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2134(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 < v44387 && 2 <= v44381 && 2 <= v44386 && 3 <= v44385 && 3 <= v44378 f_2134(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2138(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2138(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2141(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2141(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2144(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2144(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2147(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2147(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2151(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2151(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2154(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2154(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2157(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v47531, v44381, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2157(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v47531, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2161(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: v47531 = 0 f_2161(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2166(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2166(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2170(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2170(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44381, v44388, v44389, v44390, 3, 2, 4) -> f_2174(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44388, v44389, v44390, 3, 2, 4) :|: 0 = 0 f_2174(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v44388, v44389, v44390, 3, 2, 4) -> f_2178(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) :|: 1 + v48615 = v44387 && 0 <= v48615 f_2178(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) -> f_2182(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2182(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) -> f_2185(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2185(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) -> f_2108(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44387, 0, v44383, v44384, v44385, v44386, v48615, v44388, v44389, v44390, 3, 2, 4) :|: TRUE f_2108(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) -> f_2112(v44374, v44375, v44376, v44377, v44378, v44379, 1, v44381, 0, v44383, v44384, v44385, v44386, v44387, v44388, v44389, v44390, 3, 2, 4) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_2112(v44374:0, v44375:0, v44376:0, v44377:0, v44378:0, v44379:0, 1, v44381:0, 0, v44383:0, v44384:0, v44385:0, v44386:0, 1 + v48615:0, v44388:0, v44389:0, v44390:0, 3, 2, 4) -> f_2112(v44374:0, v44375:0, v44376:0, v44377:0, v44378:0, v44379:0, 1, 1 + v48615:0, 0, v44383:0, v44384:0, v44385:0, v44386:0, v48615:0, v44388:0, v44389:0, v44390:0, 3, 2, 4) :|: v44381:0 > 1 && v48615:0 > -1 && v44386:0 > 1 && v44385:0 > 2 && v44378:0 > 2 Filtered unneeded arguments: f_2112(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) -> f_2112(x5, x8, x12, x13, x14) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_2112(v44378:0, v44381:0, v44385:0, v44386:0, sum~cons_1~v48615:0) -> f_2112(v44378:0, 1 + v48615:0, v44385:0, v44386:0, v48615:0) :|: v48615:0 > -1 && v44381:0 > 1 && v44386:0 > 1 && v44378:0 > 2 && v44385:0 > 2 && sum~cons_1~v48615:0 = 1 + v48615:0 ---------------------------------------- (23) Obligation: Rules: f_2112(v44378:0, v44381:0, v44385:0, v44386:0, sum~cons_1~v48615:0) -> f_2112(v44378:0, 1 + v48615:0, v44385:0, v44386:0, v48615:0) :|: v48615:0 > -1 && v44381:0 > 1 && v44386:0 > 1 && v44378:0 > 2 && v44385:0 > 2 && sum~cons_1~v48615:0 = 1 + v48615:0 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_2112_5,1) ---------------------------------------- (25) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX4 - 1; assume(oldX5 > -1 && oldX1 > 1 && oldX3 > 1 && oldX0 > 2 && oldX2 > 2 && oldX4 = 1 + oldX5); x0 := oldX0; x1 := 1 + oldX5; x2 := oldX2; x3 := oldX3; x4 := oldX4 - 1; TO: 1; ---------------------------------------- (26) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x4 RF for loc. 6: 2*x4 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (27) YES ---------------------------------------- (28) Obligation: SCC ---------------------------------------- (29) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 22 rulesP rules: f_1975(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) -> f_1983(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_1983(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) -> f_1990(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_1990(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) -> f_1997(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_1997(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) -> f_2005(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2005(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) -> f_2009(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2009(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2013(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 < v37331 && 2 <= v37325 && 2 <= v37328 && 3 <= v37327 && 3 <= v37323 f_2013(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2018(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2018(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2023(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2023(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2028(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2028(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2032(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2032(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2037(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2037(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2041(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2041(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2046(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v41431, v37325, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2046(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v41431, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2052(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: v41431 = 0 f_2052(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2058(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2058(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2063(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2063(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37325, v37332, v37333, v37334, 3, 2, 4) -> f_2069(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37332, v37333, v37334, 3, 2, 4) :|: 0 = 0 f_2069(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v37332, v37333, v37334, 3, 2, 4) -> f_2074(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) :|: 1 + v42430 = v37331 && 0 <= v42430 f_2074(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) -> f_2080(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2080(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) -> f_2086(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_2086(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) -> f_1968(v37319, v37320, v37321, v37322, v37323, 1, v37331, v37326, v37327, v37328, v37329, 0, v42430, v37332, v37333, v37334, 3, 2, 4) :|: TRUE f_1968(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) -> f_1975(v37319, v37320, v37321, v37322, v37323, 1, v37325, v37326, v37327, v37328, v37329, 0, v37331, v37332, v37333, v37334, 3, 2, 4) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_1975(v37319:0, v37320:0, v37321:0, v37322:0, v37323:0, 1, v37325:0, v37326:0, v37327:0, v37328:0, v37329:0, 0, 1 + v42430:0, v37332:0, v37333:0, v37334:0, 3, 2, 4) -> f_1975(v37319:0, v37320:0, v37321:0, v37322:0, v37323:0, 1, 1 + v42430:0, v37326:0, v37327:0, v37328:0, v37329:0, 0, v42430:0, v37332:0, v37333:0, v37334:0, 3, 2, 4) :|: v37325:0 > 1 && v42430:0 > -1 && v37328:0 > 1 && v37327:0 > 2 && v37323:0 > 2 Filtered unneeded arguments: f_1975(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_1975(x5, x7, x9, x10, x13) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_1975(v37323:0, v37325:0, v37327:0, v37328:0, sum~cons_1~v42430:0) -> f_1975(v37323:0, 1 + v42430:0, v37327:0, v37328:0, v42430:0) :|: v42430:0 > -1 && v37325:0 > 1 && v37328:0 > 1 && v37323:0 > 2 && v37327:0 > 2 && sum~cons_1~v42430:0 = 1 + v42430:0 ---------------------------------------- (30) Obligation: Rules: f_1975(v37323:0, v37325:0, v37327:0, v37328:0, sum~cons_1~v42430:0) -> f_1975(v37323:0, 1 + v42430:0, v37327:0, v37328:0, v42430:0) :|: v42430:0 > -1 && v37325:0 > 1 && v37328:0 > 1 && v37323:0 > 2 && v37327:0 > 2 && sum~cons_1~v42430:0 = 1 + v42430:0 ---------------------------------------- (31) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1975_5,1) ---------------------------------------- (32) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX4 - 1; assume(oldX5 > -1 && oldX1 > 1 && oldX3 > 1 && oldX0 > 2 && oldX2 > 2 && oldX4 = 1 + oldX5); x0 := oldX0; x1 := 1 + oldX5; x2 := oldX2; x3 := oldX3; x4 := oldX4 - 1; TO: 1; ---------------------------------------- (33) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x4 RF for loc. 6: 2*x4 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC ---------------------------------------- (36) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 56 rulesP rules: f_1823(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29320, v29321, v29322, v29323, 3, 2, 4) -> f_1830(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29320, v29321, v29322, v29323, 3, 2, 4) :|: 1 + v29568 = v29309 && 0 <= v29568 f_1830(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29320, v29321, v29322, v29323, 3, 2, 4) -> f_1837(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29320, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1837(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29320, v29321, v29322, v29323, 3, 2, 4) -> f_1843(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1843(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1850(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1850(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1856(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1856(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1862(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1862(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1868(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1868(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29568, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1875(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1875(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1883(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) :|: v29568 != 0 && 2 <= v29309 && 3 <= v29315 f_1883(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1891(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1891(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1900(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1900(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29311, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29953, v29321, v29322, v29323, 3, 2, 4) -> f_1910(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1910(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) -> f_1920(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) :|: 0 < v29953 f_1920(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) -> f_1930(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1930(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) -> f_1939(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1939(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) -> f_1947(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1947(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, v29309, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29321, v29322, v29323, 3, 2, 4) -> f_1955(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1955(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1963(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1963(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1972(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1972(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1980(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1980(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1988(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: v37794 != 0 f_1980(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1989(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: v37794 = 0 f_1988(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1995(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1995(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_2003(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_2003(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1815(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v37794, v29317, v29318, v29309, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1815(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29319, v29320, v29321, v29322, v29323, 3, 2, 4) -> f_1823(v29304, v29305, v29306, v29307, v29308, v29309, 1, v29311, 0, v29313, v29314, v29315, v29316, v29317, v29318, v29320, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1989(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1996(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: 0 = 0 f_1996(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_2004(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_2004(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29321, v29322, v29323, 3, 2, 4) -> f_1817(v29304, v29305, v29306, v29307, v29308, v29568, 1, v29953, 0, v29313, v29314, v29315, v29317, v29318, v29309, v29953, v29321, v29322, v29323, 3, 2, 4) :|: TRUE f_1817(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29445, v29446, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) -> f_1824(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29446, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) :|: 0 = 0 f_1824(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29446, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) -> f_1831(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29569, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) :|: 1 + v29569 = v29440 && 0 <= v29569 f_1831(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29569, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) -> f_1838(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29569, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) :|: TRUE f_1838(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29569, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) -> f_1844(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29569, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) :|: TRUE f_1844(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29569, v29447, v29448, v29449, v29450, v29451, 3, 2, 4) -> f_1845(v29433, v29434, v29435, v29436, v29437, v29438, 1, v29440, 0, v29442, v29443, v29444, v29447, v29448, v29569, v29449, v29450, v29451, 3, 2, 4) :|: TRUE f_1845(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) -> f_1851(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1851(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) -> f_1857(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1857(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) -> f_1863(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1863(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) -> f_1869(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1869(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) -> f_1876(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1876(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30085, 0, v30087, v30088, v30089, v30090, v30091, v30092, v30093, v30094, v30095, 3, 2, 4) -> f_1885(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1885(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1893(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 < v30092 && 2 <= v30085 && 2 <= v30091 f_1893(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1902(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1902(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1912(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1912(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1923(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1923(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1932(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1932(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1941(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1941(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1949(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1949(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1957(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1957(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1964(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: v37024 != 0 f_1957(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1965(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: v37024 = 0 f_1964(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1973(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1973(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1981(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1981(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1815(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v37024, v30085, v30092, v30090, v30091, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1965(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1974(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: 0 = 0 f_1974(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1982(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) :|: TRUE f_1982(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30090, v30091, v30085, v30093, v30094, v30095, 3, 2, 4) -> f_1817(v30078, v30079, v30080, v30081, v30082, v30083, 1, v30092, 0, v30087, v30088, v30089, v30085, v30092, v30090, v30091, v30093, v30094, v30095, 3, 2, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_1823(v29304:0, v29305:0, v29306:0, v29307:0, v29308:0, 1 + v29568:0, 1, v29311:0, 0, v29313:0, v29314:0, v29315:0, v29316:0, v29317:0, v29318:0, v29320:0, v29321:0, v29322:0, v29323:0, 3, 2, 4) -> f_1823(v29304:0, v29305:0, v29306:0, v29307:0, v29308:0, v29568:0, 1, v29953:0, 0, v29313:0, v29314:0, v29315:0, v37794:0, v29317:0, v29318:0, v29953:0, v29321:0, v29322:0, v29323:0, 3, 2, 4) :|: v29568:0 > 0 && v29315:0 > 2 && v37794:0 < 0 && v29953:0 > 0 f_1823(v29304:0, v29305:0, v29306:0, v29307:0, v29308:0, 1 + v29568:0, 1, v29311:0, 0, v29313:0, v29314:0, v29315:0, v29316:0, v29317:0, v29318:0, v29320:0, v29321:0, v29322:0, v29323:0, 3, 2, 4) -> f_1823(v29304:0, v29305:0, v29306:0, v29307:0, v29308:0, v29568:0, 1, v29953:0, 0, v29313:0, v29314:0, v29315:0, v37794:0, v29317:0, v29318:0, v29953:0, v29321:0, v29322:0, v29323:0, 3, 2, 4) :|: v29568:0 > 0 && v29315:0 > 2 && v37794:0 > 0 && v29953:0 > 0 f_1823(v29304:0, v29305:0, v29306:0, v29307:0, v29308:0, 1 + v29568:0, 1, v29311:0, 0, v29313:0, v29314:0, v29315:0, v29316:0, v29317:0, v29318:0, v29320:0, v29321:0, v29322:0, v29323:0, 3, 2, 4) -> f_1957(v29304:0, v29305:0, v29306:0, v29307:0, v29308:0, v29568:0, 1, v29569:0, 0, v29313:0, v29314:0, v29315:0, v37024:0, 1 + v29568:0, 1 + v29569:0, 1 + v29569:0, v29321:0, v29322:0, v29323:0, 3, 2, 4) :|: v29568:0 > 0 && v29569:0 > 0 && v29315:0 > 2 f_1957(v30078:0, v30079:0, v30080:0, v30081:0, v30082:0, v30083:0, 1, v30092:0, 0, v30087:0, v30088:0, v30089:0, v37024:0, v30090:0, v30091:0, v30085:0, v30093:0, v30094:0, v30095:0, 3, 2, 4) -> f_1823(v30078:0, v30079:0, v30080:0, v30081:0, v30082:0, v30083:0, 1, v30092:0, 0, v30087:0, v30088:0, v30089:0, v37024:0, v30085:0, v30092:0, v30091:0, v30093:0, v30094:0, v30095:0, 3, 2, 4) :|: v37024:0 < 0 f_1957(v30078:0, v30079:0, v30080:0, v30081:0, v30082:0, v30083:0, 1, v30092:0, 0, v30087:0, v30088:0, v30089:0, v37024:0, v30090:0, v30091:0, v30085:0, v30093:0, v30094:0, v30095:0, 3, 2, 4) -> f_1823(v30078:0, v30079:0, v30080:0, v30081:0, v30082:0, v30083:0, 1, v30092:0, 0, v30087:0, v30088:0, v30089:0, v37024:0, v30085:0, v30092:0, v30091:0, v30093:0, v30094:0, v30095:0, 3, 2, 4) :|: v37024:0 > 0 f_1957(v30078:0, v30079:0, v30080:0, v30081:0, v30082:0, v30083:0, 1, 1 + v29569:0, 0, v30087:0, v30088:0, v30089:0, 0, v30090:0, v30091:0, v30085:0, v30093:0, v30094:0, v30095:0, 3, 2, 4) -> f_1957(v30078:0, v30079:0, v30080:0, v30081:0, v30082:0, v30083:0, 1, v29569:0, 0, v30087:0, v30088:0, v30089:0, v37024:1, v30090:0, v30091:0, 1 + v29569:0, v30093:0, v30094:0, v30095:0, 3, 2, 4) :|: v29569:0 > 0 && v30091:0 > 1 Filtered unneeded arguments: f_1823(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) -> f_1823(x6, x12) f_1957(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) -> f_1957(x6, x8, x12, x13, x15) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_1823(sum~cons_1~v29568:0, v29315:0) -> f_1823(v29568:0, v29315:0) :|: v29568:0 > 0 && v29315:0 > 2 && sum~cons_1~v29568:0 = 1 + v29568:0 f_1823(sum~cons_1~v29568:0, v29315:0) -> f_1957(v29568:0, v29569:0, v29315:0, v37024:0, 1 + v29569:0) :|: v29569:0 > 0 && v29315:0 > 2 && v29568:0 > 0 && sum~cons_1~v29568:0 = 1 + v29568:0 f_1957(v30083:0, v30092:0, v30089:0, v37024:0, v30091:0) -> f_1823(v30083:0, v30089:0) :|: v37024:0 < 0 f_1957(v30083:0, v30092:0, v30089:0, v37024:0, v30091:0) -> f_1823(v30083:0, v30089:0) :|: v37024:0 > 0 f_1957(v30083:0, sum~cons_1~v29569:0, v30089:0, cons_0, v30091:0) -> f_1957(v30083:0, v29569:0, v30089:0, v37024:1, v30091:0) :|: v29569:0 > 0 && v30091:0 > 1 && sum~cons_1~v29569:0 = 1 + v29569:0 && cons_0 = 0 ---------------------------------------- (37) Obligation: Rules: f_1823(sum~cons_1~v29568:0, v29315:0) -> f_1823(v29568:0, v29315:0) :|: v29568:0 > 0 && v29315:0 > 2 && sum~cons_1~v29568:0 = 1 + v29568:0 f_1823(x, x1) -> f_1957(x2, x3, x1, x4, 1 + x3) :|: x3 > 0 && x1 > 2 && x2 > 0 && x = 1 + x2 f_1957(v30083:0, v30092:0, v30089:0, v37024:0, v30091:0) -> f_1823(v30083:0, v30089:0) :|: v37024:0 < 0 f_1957(x5, x6, x7, x8, x9) -> f_1823(x5, x7) :|: x8 > 0 f_1957(x10, x11, x12, x13, x14) -> f_1957(x10, x15, x12, x16, x14) :|: x15 > 0 && x14 > 1 && x11 = 1 + x15 && x13 = 0 ---------------------------------------- (38) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1823_5,1) (f_1957_5,2) ---------------------------------------- (39) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX0 - 1; oldX6 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX5 > 0 && oldX1 > 2 && oldX0 = 1 + oldX5); x0 := oldX0 - 1; x1 := oldX1; x2 := oldX6; x3 := oldX7; x4 := oldX8; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX0 - 1; oldX6 := nondet(); oldX7 := nondet(); assume(oldX6 > 0 && oldX1 > 2 && oldX5 > 0 && oldX0 = 1 + oldX5); x0 := oldX0 - 1; x1 := oldX6; x2 := oldX1; x3 := oldX7; x4 := 1 + oldX6; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); oldX6 := nondet(); oldX7 := nondet(); assume(oldX3 < 0); x0 := oldX0; x1 := oldX2; x2 := oldX5; x3 := oldX6; x4 := oldX7; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); oldX6 := nondet(); oldX7 := nondet(); assume(oldX3 > 0); x0 := oldX0; x1 := oldX2; x2 := oldX5; x3 := oldX6; x4 := oldX7; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; oldX6 := nondet(); assume(oldX5 > 0 && oldX4 > 1 && oldX1 = 1 + oldX5 && oldX3 = 0); x0 := oldX0; x1 := oldX1 - 1; x2 := oldX2; x3 := oldX6; x4 := oldX4; TO: 2; ---------------------------------------- (40) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 14, 17, 18, 19 using the following rank functions: - Rank function 1: RF for loc. 6: -1+4*x0 RF for loc. 7: 4*x0 RF for loc. 8: -4+4*x0 RF for loc. 12: 4*x0 Bound for (chained) transitions 5: 4 - Rank function 2: RF for loc. 6: -1+3*x0 RF for loc. 7: 3*x0 RF for loc. 8: -2+3*x0 RF for loc. 12: 3*x0 Bound for (chained) transitions 6: 4 - Rank function 3: RF for loc. 6: -1 RF for loc. 7: 0 RF for loc. 8: -2 RF for loc. 12: 0 Bound for (chained) transitions 2: -1 Bound for (chained) transitions 17: 0 Bound for (chained) transitions 18: 0 - Rank function 4: RF for loc. 7: 2*x1 RF for loc. 12: -1+2*x1 Bound for (chained) transitions 19: 3 - Rank function 5: RF for loc. 7: 0 RF for loc. 12: -1 Bound for (chained) transitions 14: 0 ---------------------------------------- (41) YES ---------------------------------------- (42) Obligation: SCC ---------------------------------------- (43) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 25 rulesP rules: f_1482(v17197, v17198, v17199, v17200, v17201, v17202, 1, v17204, 0, v17206, v17207, v17208, v17209, v17210, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1491(v17197, v17198, v17199, v17200, v17201, v17202, 1, v17204, 0, v17206, v17207, v17208, v17209, v17210, v17211, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1491(v17197, v17198, v17199, v17200, v17201, v17202, 1, v17204, 0, v17206, v17207, v17208, v17209, v17210, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1500(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1500(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1508(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) :|: v17210 != 0 && 2 <= v17202 && 2 <= v17208 f_1508(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1515(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1515(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1522(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1522(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17204, v17202, 0, v17206, v17207, v17208, v17209, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1530(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1530(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) -> f_1539(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) :|: 0 < v17211 f_1539(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) -> f_1549(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1549(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) -> f_1560(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1560(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) -> f_1573(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1573(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, v17202, 0, v17206, v17207, v17208, v17209, v17212, v17213, v17214, 3, 2, 4) -> f_1586(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v17209, v17202, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1586(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v17209, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1599(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v17209, v17202, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1599(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v17209, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1610(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v17209, v17202, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1610(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v17209, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1620(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1620(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1630(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) :|: v20308 != 0 f_1630(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1640(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1640(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1649(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1649(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17202, v17212, v17213, v17214, 3, 2, 4) -> f_1656(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17212, v17213, v17214, 3, 2, 4) :|: 0 = 0 f_1656(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v17212, v17213, v17214, 3, 2, 4) -> f_1663(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v17212, v17213, v17214, 3, 2, 4) :|: 1 + v22104 = v17210 && 0 <= v22104 f_1663(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v17212, v17213, v17214, 3, 2, 4) -> f_1670(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1670(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v17212, v17213, v17214, 3, 2, 4) -> f_1677(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1677(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) -> f_1685(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1685(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) -> f_1695(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1695(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) -> f_1472(v17197, v17198, v17199, v17200, v17201, v17210, 1, v17211, 0, v17206, v17207, v17208, v20308, v22104, v22843, v17212, v17213, v17214, 3, 2, 4) :|: TRUE f_1472(v17197, v17198, v17199, v17200, v17201, v17202, 1, v17204, 0, v17206, v17207, v17208, v17209, v17210, v17211, v17212, v17213, v17214, 3, 2, 4) -> f_1482(v17197, v17198, v17199, v17200, v17201, v17202, 1, v17204, 0, v17206, v17207, v17208, v17209, v17210, v17211, v17212, v17213, v17214, 3, 2, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_1482(v17197:0, v17198:0, v17199:0, v17200:0, v17201:0, v17202:0, 1, v17204:0, 0, v17206:0, v17207:0, v17208:0, v17209:0, 1 + v22104:0, v17211:0, v17212:0, v17213:0, v17214:0, 3, 2, 4) -> f_1482(v17197:0, v17198:0, v17199:0, v17200:0, v17201:0, 1 + v22104:0, 1, v17211:0, 0, v17206:0, v17207:0, v17208:0, v20308:0, v22104:0, v22843:0, v17212:0, v17213:0, v17214:0, 3, 2, 4) :|: v17202:0 > 1 && v22104:0 > -1 && v17208:0 > 1 && v17211:0 > 0 && v20308:0 < 0 f_1482(v17197:0, v17198:0, v17199:0, v17200:0, v17201:0, v17202:0, 1, v17204:0, 0, v17206:0, v17207:0, v17208:0, v17209:0, 1 + v22104:0, v17211:0, v17212:0, v17213:0, v17214:0, 3, 2, 4) -> f_1482(v17197:0, v17198:0, v17199:0, v17200:0, v17201:0, 1 + v22104:0, 1, v17211:0, 0, v17206:0, v17207:0, v17208:0, v20308:0, v22104:0, v22843:0, v17212:0, v17213:0, v17214:0, 3, 2, 4) :|: v17202:0 > 1 && v22104:0 > -1 && v17208:0 > 1 && v17211:0 > 0 && v20308:0 > 0 Filtered unneeded arguments: f_1482(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_1482(x6, x12, x14, x15) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_1482(v17202:0, v17208:0, sum~cons_1~v22104:0, v17211:0) -> f_1482(1 + v22104:0, v17208:0, v22104:0, v22843:0) :|: v22104:0 > -1 && v17202:0 > 1 && v17211:0 > 0 && v17208:0 > 1 && sum~cons_1~v22104:0 = 1 + v22104:0 ---------------------------------------- (44) Obligation: Rules: f_1482(v17202:0, v17208:0, sum~cons_1~v22104:0, v17211:0) -> f_1482(1 + v22104:0, v17208:0, v22104:0, v22843:0) :|: v22104:0 > -1 && v17202:0 > 1 && v17211:0 > 0 && v17208:0 > 1 && sum~cons_1~v22104:0 = 1 + v22104:0 ---------------------------------------- (45) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1482_4,1) ---------------------------------------- (46) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX2 - 1; oldX5 := nondet(); assume(oldX4 > -1 && oldX0 > 1 && oldX3 > 0 && oldX1 > 1 && oldX2 = 1 + oldX4); x0 := 1 + oldX4; x1 := oldX1; x2 := oldX2 - 1; x3 := oldX5; TO: 1; ---------------------------------------- (47) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x2 RF for loc. 6: 2*x2 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (48) YES ---------------------------------------- (49) Obligation: SCC ---------------------------------------- (50) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 59 rulesP rules: f_1434(v16364, v16365, v16366, v16367, v16368, v16369, 1, v16371, 0, v16373, v16374, v16375, v16376, v16377, v16378, v16379, 3, 2, 4) -> f_1440(v16364, v16365, v16366, v16367, v16368, v16369, 1, v16371, 0, v16373, v16374, v16375, v16376, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1440(v16364, v16365, v16366, v16367, v16368, v16369, 1, v16371, 0, v16373, v16374, v16375, v16376, v16377, v16378, v16379, 3, 2, 4) -> f_1447(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1447(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1455(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: v16376 != 0 f_1455(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1465(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1465(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1475(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1475(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1485(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1485(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1494(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1494(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1503(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1503(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1511(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1511(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, v16369, 0, v16373, v16374, v16375, v16377, v16378, v16379, 3, 2, 4) -> f_1518(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1518(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1526(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: v16376 <= 0 && 1 + v16369 <= 0 && 1 + v16375 <= 0 f_1526(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1535(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1535(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1545(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1545(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16373, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1554(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1554(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1566(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: v19234 != 0 f_1554(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1567(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: v19234 = 0 f_1566(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1579(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1579(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1592(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1592(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1803(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v19234, v16374, v16375, v16369, v16376, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1803(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29059, v29060, v29061, v29062, v29063, 3, 2, 4) -> f_1812(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29060, v29061, v29062, v29063, 3, 2, 4) :|: 0 = 0 f_1812(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29060, v29061, v29062, v29063, 3, 2, 4) -> f_1821(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) :|: v29562 = 1 + v29052 && v29562 <= 1 f_1821(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) -> f_1828(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) :|: TRUE f_1828(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) -> f_1835(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) :|: TRUE f_1835(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) -> f_1428(v29047, v29048, v29049, v29050, v29051, v29052, 1, v29054, 0, v29056, v29057, v29058, v29562, v29061, v29062, v29063, 3, 2, 4) :|: TRUE f_1428(v16364, v16365, v16366, v16367, v16368, v16369, 1, v16371, 0, v16373, v16374, v16375, v16376, v16377, v16378, v16379, 3, 2, 4) -> f_1434(v16364, v16365, v16366, v16367, v16368, v16369, 1, v16371, 0, v16373, v16374, v16375, v16376, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1567(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1580(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: 0 = 0 f_1580(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1593(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1593(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16377, v16378, v16379, 3, 2, 4) -> f_1805(v16364, v16365, v16366, v16367, v16368, v16376, 1, v16371, 0, v16374, v16375, v16369, v16376, v16377, v16378, v16379, 3, 2, 4) :|: TRUE f_1805(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29094, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1813(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) :|: 0 = 0 f_1813(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1822(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) :|: 1 + v29563 = v29092 && 0 <= v29563 f_1822(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1829(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) :|: TRUE f_1829(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29095, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1836(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29691, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) :|: TRUE f_1836(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29691, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1842(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29691, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) :|: TRUE f_1842(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29691, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1849(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29691, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) :|: TRUE f_1849(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29563, v29691, v29096, v29097, v29098, v29099, v29100, 3, 2, 4) -> f_1655(v29085, v29086, v29087, v29088, v29089, v29090, 1, v29092, 0, v29096, v29097, v29563, v29691, v29098, v29099, v29100, 3, 4) :|: TRUE f_1655(v21802, v21803, v21804, v21805, v21806, v21807, 1, v21809, 0, v21811, v21812, v21813, v21814, v21815, v21816, v21817, 3, 4) -> f_1662(v21802, v21803, v21804, v21805, v21806, v21807, 1, v21809, 0, v21811, v21812, v21813, v21814, v21815, v21816, v21817, 3, 4) :|: TRUE f_1662(v21802, v21803, v21804, v21805, v21806, v21807, 1, v21809, 0, v21811, v21812, v21813, v21814, v21815, v21816, v21817, 3, 4) -> f_1669(v21802, v21803, v21804, v21805, v21806, v21807, 1, v21809, 0, v21811, v21812, v21813, v21814, v21815, v21816, v21817, 3, 4) :|: TRUE f_1669(v21802, v21803, v21804, v21805, v21806, v21807, 1, v21809, 0, v21811, v21812, v21813, v21814, v21815, v21816, v21817, 3, 4) -> f_1676(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) :|: 0 = 0 f_1676(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) -> f_1683(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) :|: v21814 != 0 f_1683(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) -> f_1693(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) :|: 0 = 0 f_1693(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) -> f_1702(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) :|: TRUE f_1702(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21809, v21807, 0, v21811, v21812, v21813, v21815, v21816, v21817, 3, 4) -> f_1710(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 4) :|: 0 = 0 f_1710(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 4) -> f_1717(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 < v21813 && 2 <= v21809 && 2 <= v21806 f_1717(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1725(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 = 0 f_1725(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1730(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 = 0 f_1730(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1736(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: TRUE f_1736(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, v21807, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1742(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 = 0 f_1742(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1751(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: v21814 <= 0 f_1751(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1759(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 = 0 f_1759(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1767(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: TRUE f_1767(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1774(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: TRUE f_1774(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1782(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: v28471 != 0 f_1774(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1783(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: v28471 = 0 f_1782(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1791(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 = 0 f_1791(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1802(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: TRUE f_1802(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1803(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v28471, v21809, v21814, v21811, v21812, v21815, v21816, v21817, 3, 2, 4) :|: TRUE f_1783(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1792(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: 0 = 0 f_1792(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1804(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) :|: TRUE f_1804(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21811, v21812, v21809, v21815, v21816, v21817, 3, 2, 4) -> f_1805(v21802, v21803, v21804, v21805, v21806, v21814, 1, v21813, 0, v21809, v21814, v21811, v21812, v21815, v21816, v21817, 3, 2, 4) :|: TRUE Combined rules. Obtained 12 rulesP rules: f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, 1 + v29563:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1774(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v29691:0, 1, v29563:0, 0, v28471:0, v16369:0, v16376:0, 1 + v29563:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v29563:0 > 0 && v16376:0 < 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 < 0 && v29691:0 < 1 && v16368:0 > 1 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, 1 + v29563:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1774(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v29691:0, 1, v29563:0, 0, v28471:0, v16369:0, v16376:0, 1 + v29563:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v29563:0 > 0 && v16376:0 < 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 > 0 && v29691:0 < 1 && v16368:0 > 1 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, 1 + v29563:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1774(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v29691:0, 1, v29563:0, 0, v28471:0, v16369:0, v16376:0, 1 + v29563:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v29563:0 > 0 && v16376:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 < 0 && v29691:0 < 1 && v16368:0 > 1 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, 1 + v29563:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1774(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v29691:0, 1, v29563:0, 0, v28471:0, v16369:0, v16376:0, 1 + v29563:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v29563:0 > 0 && v16376:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 > 0 && v29691:0 < 1 && v16368:0 > 1 f_1774(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v21814:0, 1, 1 + v29563:0, 0, 0, v21811:0, v21812:0, v21809:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) -> f_1774(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v29691:0, 1, v29563:0, 0, v28471:1, v21811:0, v21812:0, 1 + v29563:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) :|: v29563:0 > 0 && v29691:0 < 0 && v29691:0 < 1 && v21806:0 > 1 f_1774(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v21814:0, 1, 1 + v29563:0, 0, 0, v21811:0, v21812:0, v21809:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) -> f_1774(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v29691:0, 1, v29563:0, 0, v28471:1, v21811:0, v21812:0, 1 + v29563:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) :|: v29563:0 > 0 && v29691:0 > 0 && v29691:0 < 1 && v21806:0 > 1 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, v16371:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16376:0, 1, v16371:0, 0, v19234:0, v16374:0, v16375:0, 1 + v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v16376:0 < 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v19234:0 < 0 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, v16371:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16376:0, 1, v16371:0, 0, v19234:0, v16374:0, v16375:0, 1 + v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v16376:0 < 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v19234:0 > 0 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, v16371:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16376:0, 1, v16371:0, 0, v19234:0, v16374:0, v16375:0, 1 + v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v16376:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v19234:0 < 0 f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16369:0, 1, v16371:0, 0, v16373:0, v16374:0, v16375:0, v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) -> f_1434(v16364:0, v16365:0, v16366:0, v16367:0, v16368:0, v16376:0, 1, v16371:0, 0, v19234:0, v16374:0, v16375:0, 1 + v16376:0, v16377:0, v16378:0, v16379:0, 3, 2, 4) :|: v16376:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v19234:0 > 0 f_1774(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v21814:0, 1, v21813:0, 0, v28471:0, v21811:0, v21812:0, v21809:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) -> f_1434(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v21814:0, 1, v21813:0, 0, v28471:0, v21809:0, v21814:0, 1 + v21814:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) :|: v28471:0 < 0 && v21814:0 < 1 f_1774(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v21814:0, 1, v21813:0, 0, v28471:0, v21811:0, v21812:0, v21809:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) -> f_1434(v21802:0, v21803:0, v21804:0, v21805:0, v21806:0, v21814:0, 1, v21813:0, 0, v28471:0, v21809:0, v21814:0, 1 + v21814:0, v21815:0, v21816:0, v21817:0, 3, 2, 4) :|: v28471:0 > 0 && v21814:0 < 1 Filtered unneeded arguments: f_1434(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_1434(x5, x6, x8, x12, x13) f_1774(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_1774(x5, x6, x8, x10) Removed division, modulo operations, cleaned up constraints. Obtained 10 rules.P rules: f_1434(v16368:0, v16369:0, sum~cons_1~v29563:0, v16375:0, v16376:0) -> f_1774(v16368:0, v29691:0, v29563:0, v28471:0) :|: v16376:0 < 0 && v29563:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 < 0 && v16368:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 f_1434(v16368:0, v16369:0, sum~cons_1~v29563:0, v16375:0, v16376:0) -> f_1774(v16368:0, v29691:0, v29563:0, v28471:0) :|: v16376:0 < 0 && v29563:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 > 0 && v16368:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 f_1434(v16368:0, v16369:0, sum~cons_1~v29563:0, v16375:0, v16376:0) -> f_1774(v16368:0, v29691:0, v29563:0, v28471:0) :|: v16376:0 > 0 && v29563:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 < 0 && v16368:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 f_1434(v16368:0, v16369:0, sum~cons_1~v29563:0, v16375:0, v16376:0) -> f_1774(v16368:0, v29691:0, v29563:0, v28471:0) :|: v16376:0 > 0 && v29563:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 > 0 && v16368:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 f_1774(v21806:0, v21814:0, sum~cons_1~v29563:0, cons_0) -> f_1774(v21806:0, v29691:0, v29563:0, v28471:1) :|: v29691:0 < 0 && v29563:0 > 0 && v21806:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 && cons_0 = 0 f_1774(v21806:0, v21814:0, sum~cons_1~v29563:0, cons_0) -> f_1774(v21806:0, v29691:0, v29563:0, v28471:1) :|: v29691:0 > 0 && v29563:0 > 0 && v21806:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 && cons_0 = 0 f_1434(v16368:0, v16369:0, v16371:0, v16375:0, v16376:0) -> f_1434(v16368:0, v16376:0, v16371:0, v16375:0, 1 + v16376:0) :|: v16369:0 < 0 && v16376:0 < 0 && v16375:0 < 0 && v16376:0 < 1 f_1434(v16368:0, v16369:0, v16371:0, v16375:0, v16376:0) -> f_1434(v16368:0, v16376:0, v16371:0, v16375:0, 1 + v16376:0) :|: v16369:0 < 0 && v16376:0 > 0 && v16375:0 < 0 && v16376:0 < 1 f_1774(v21806:0, v21814:0, v21813:0, v28471:0) -> f_1434(v21806:0, v21814:0, v21813:0, v21814:0, 1 + v21814:0) :|: v28471:0 < 0 && v21814:0 < 1 f_1774(v21806:0, v21814:0, v21813:0, v28471:0) -> f_1434(v21806:0, v21814:0, v21813:0, v21814:0, 1 + v21814:0) :|: v28471:0 > 0 && v21814:0 < 1 ---------------------------------------- (51) Obligation: Rules: f_1434(v16368:0, v16369:0, sum~cons_1~v29563:0, v16375:0, v16376:0) -> f_1774(v16368:0, v29691:0, v29563:0, v28471:0) :|: v16376:0 < 0 && v29563:0 > 0 && v16369:0 < 0 && v16376:0 < 1 && v16375:0 < 0 && v29691:0 < 0 && v16368:0 > 1 && v29691:0 < 1 && sum~cons_1~v29563:0 = 1 + v29563:0 f_1434(x, x1, x2, x3, x4) -> f_1774(x, x5, x6, x7) :|: x4 < 0 && x6 > 0 && x1 < 0 && x4 < 1 && x3 < 0 && x5 > 0 && x > 1 && x5 < 1 && x2 = 1 + x6 f_1434(x8, x9, x10, x11, x12) -> f_1774(x8, x13, x14, x15) :|: x12 > 0 && x14 > 0 && x9 < 0 && x12 < 1 && x11 < 0 && x13 < 0 && x8 > 1 && x13 < 1 && x10 = 1 + x14 f_1434(x16, x17, x18, x19, x20) -> f_1774(x16, x21, x22, x23) :|: x20 > 0 && x22 > 0 && x17 < 0 && x20 < 1 && x19 < 0 && x21 > 0 && x16 > 1 && x21 < 1 && x18 = 1 + x22 f_1774(x24, x25, x26, x27) -> f_1774(x24, x28, x29, x30) :|: x28 < 0 && x29 > 0 && x24 > 1 && x28 < 1 && x26 = 1 + x29 && x27 = 0 f_1774(x31, x32, x33, x34) -> f_1774(x31, x35, x36, x37) :|: x35 > 0 && x36 > 0 && x31 > 1 && x35 < 1 && x33 = 1 + x36 && x34 = 0 f_1434(x38, x39, x40, x41, x42) -> f_1434(x38, x42, x40, x41, 1 + x42) :|: x39 < 0 && x42 < 0 && x41 < 0 && x42 < 1 f_1434(x43, x44, x45, x46, x47) -> f_1434(x43, x47, x45, x46, 1 + x47) :|: x44 < 0 && x47 > 0 && x46 < 0 && x47 < 1 f_1774(x48, x49, x50, x51) -> f_1434(x48, x49, x50, x49, 1 + x49) :|: x51 < 0 && x49 < 1 f_1774(x52, x53, x54, x55) -> f_1434(x52, x53, x54, x53, 1 + x53) :|: x55 > 0 && x53 < 1 ---------------------------------------- (52) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1434_5,1) (f_1774_5,2) ---------------------------------------- (53) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX6 := oldX2 - 1; oldX5 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX4 < 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 < 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); x0 := oldX0; x1 := oldX5; x2 := oldX2 - 1; x3 := oldX7; x4 := oldX8; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX6 := oldX2 - 1; oldX5 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX4 < 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); x0 := oldX0; x1 := oldX5; x2 := oldX2 - 1; x3 := oldX7; x4 := oldX8; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX6 := oldX2 - 1; oldX5 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX4 > 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 < 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); x0 := oldX0; x1 := oldX5; x2 := oldX2 - 1; x3 := oldX7; x4 := oldX8; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX6 := oldX2 - 1; oldX5 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX4 > 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); x0 := oldX0; x1 := oldX5; x2 := oldX2 - 1; x3 := oldX7; x4 := oldX8; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX6 := oldX2 - 1; oldX5 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX5 < 0 && oldX6 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6 && oldX3 = 0); x0 := oldX0; x1 := oldX5; x2 := oldX2 - 1; x3 := oldX7; x4 := oldX8; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX6 := oldX2 - 1; oldX5 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX5 > 0 && oldX6 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6 && oldX3 = 0); x0 := oldX0; x1 := oldX5; x2 := oldX2 - 1; x3 := oldX7; x4 := oldX8; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX1 < 0 && oldX4 < 0 && oldX3 < 0 && oldX4 < 1); x0 := oldX0; x1 := oldX4; x2 := oldX2; x3 := oldX3; x4 := 1 + oldX4; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX1 < 0 && oldX4 > 0 && oldX3 < 0 && oldX4 < 1); x0 := oldX0; x1 := oldX4; x2 := oldX2; x3 := oldX3; x4 := 1 + oldX4; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX3 < 0 && oldX1 < 1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX1; x4 := 1 + oldX1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX3 > 0 && oldX1 < 1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX1; x4 := 1 + oldX1; TO: 1; ---------------------------------------- (54) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 7, 8, 9, 10, 26, 29, 30, 31, 32 using the following rank functions: - Rank function 1: RF for loc. 6: -4+6*x2 RF for loc. 7: 1+6*x2 RF for loc. 8: -4+6*x2 RF for loc. 12: 6*x2 Bound for (chained) transitions 5: 8 Bound for (chained) transitions 6: 8 Bound for (chained) transitions 7: 8 Bound for (chained) transitions 8: 8 Bound for (chained) transitions 29: 12 Bound for (chained) transitions 30: 12 - Rank function 2: RF for loc. 6: 0 RF for loc. 7: 2 RF for loc. 8: 0 RF for loc. 12: 1 Bound for (chained) transitions 10: 0 Bound for (chained) transitions 26: 2 Bound for (chained) transitions 31: 1 Bound for (chained) transitions 32: 1 - Rank function 3: RF for loc. 6: -2*x4 RF for loc. 8: -1-2*x4 Bound for (chained) transitions 9: -1 - Rank function 4: RF for loc. 6: 1 RF for loc. 8: 0 Bound for (chained) transitions 2: 1 ---------------------------------------- (55) YES ---------------------------------------- (56) Obligation: SCC ---------------------------------------- (57) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 22 rulesP rules: f_1414(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) -> f_1424(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1424(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) -> f_1433(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1433(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) -> f_1439(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1439(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) -> f_1446(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1446(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) -> f_1454(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1454(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1463(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 < v15700 && 2 <= v15696 && 2 <= v15699 && 3 <= v15698 && 3 <= v15693 f_1463(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1473(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1473(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1483(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1483(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1492(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1492(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1501(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1501(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1510(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1510(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1517(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1517(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1524(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v18728, v15696, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1524(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v18728, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1533(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: v18728 = 0 f_1533(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1543(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1543(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1552(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1552(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15696, v15701, v15702, v15703, 3, 2, 4) -> f_1563(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15701, v15702, v15703, 3, 2, 4) :|: 0 = 0 f_1563(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v15701, v15702, v15703, 3, 2, 4) -> f_1576(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) :|: 1 + v19841 = v15700 && 0 <= v19841 f_1576(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) -> f_1589(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1589(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) -> f_1601(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1601(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) -> f_1401(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15700, 0, v15698, v15699, v19841, v15701, v15702, v15703, 3, 2, 4) :|: TRUE f_1401(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) -> f_1414(v15689, v15690, v15691, v15692, v15693, v15694, 1, v15696, 0, v15698, v15699, v15700, v15701, v15702, v15703, 3, 2, 4) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_1414(v15689:0, v15690:0, v15691:0, v15692:0, v15693:0, v15694:0, 1, v15696:0, 0, v15698:0, v15699:0, 1 + v19841:0, v15701:0, v15702:0, v15703:0, 3, 2, 4) -> f_1414(v15689:0, v15690:0, v15691:0, v15692:0, v15693:0, v15694:0, 1, 1 + v19841:0, 0, v15698:0, v15699:0, v19841:0, v15701:0, v15702:0, v15703:0, 3, 2, 4) :|: v15696:0 > 1 && v19841:0 > -1 && v15699:0 > 1 && v15698:0 > 2 && v15693:0 > 2 Filtered unneeded arguments: f_1414(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) -> f_1414(x5, x8, x10, x11, x12) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_1414(v15693:0, v15696:0, v15698:0, v15699:0, sum~cons_1~v19841:0) -> f_1414(v15693:0, 1 + v19841:0, v15698:0, v15699:0, v19841:0) :|: v19841:0 > -1 && v15696:0 > 1 && v15699:0 > 1 && v15693:0 > 2 && v15698:0 > 2 && sum~cons_1~v19841:0 = 1 + v19841:0 ---------------------------------------- (58) Obligation: Rules: f_1414(v15693:0, v15696:0, v15698:0, v15699:0, sum~cons_1~v19841:0) -> f_1414(v15693:0, 1 + v19841:0, v15698:0, v15699:0, v19841:0) :|: v19841:0 > -1 && v15696:0 > 1 && v15699:0 > 1 && v15693:0 > 2 && v15698:0 > 2 && sum~cons_1~v19841:0 = 1 + v19841:0 ---------------------------------------- (59) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1414_5,1) ---------------------------------------- (60) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX4 - 1; assume(oldX5 > -1 && oldX1 > 1 && oldX3 > 1 && oldX0 > 2 && oldX2 > 2 && oldX4 = 1 + oldX5); x0 := oldX0; x1 := 1 + oldX5; x2 := oldX2; x3 := oldX3; x4 := oldX4 - 1; TO: 1; ---------------------------------------- (61) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x4 RF for loc. 6: 2*x4 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (62) YES ---------------------------------------- (63) Obligation: SCC ---------------------------------------- (64) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 22 rulesP rules: f_1291(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) -> f_1303(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) :|: TRUE f_1303(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) -> f_1315(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) :|: 0 = 0 f_1315(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) -> f_1328(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) :|: 0 = 0 f_1328(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) -> f_1341(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) :|: TRUE f_1341(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) -> f_1354(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 4) :|: 0 = 0 f_1354(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 4) -> f_1366(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: 0 < v13899 && 2 <= v13896 && 2 <= v13894 f_1366(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1379(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: 0 = 0 f_1379(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1392(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: 0 = 0 f_1392(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1406(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: TRUE f_1406(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1419(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: 0 = 0 f_1419(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1429(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: 0 = 0 f_1429(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1435(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: TRUE f_1435(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1441(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v16592, v13896, v13900, v13901, v13902, 3, 2, 4) :|: TRUE f_1441(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v16592, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1449(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: v16592 = 0 f_1449(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1458(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: 0 = 0 f_1458(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1468(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) :|: TRUE f_1468(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13896, v13900, v13901, v13902, 3, 2, 4) -> f_1478(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13900, v13901, v13902, 3, 2, 4) :|: 0 = 0 f_1478(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v13900, v13901, v13902, 3, 2, 4) -> f_1488(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 2, 4) :|: 1 + v17695 = v13899 && 0 <= v17695 f_1488(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 2, 4) -> f_1497(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 2, 4) :|: TRUE f_1497(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 2, 4) -> f_1505(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 2, 4) :|: TRUE f_1505(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 2, 4) -> f_1281(v13890, v13891, v13892, v13893, v13894, 1, v13899, v13897, 0, v17695, v13900, v13901, v13902, 3, 4) :|: TRUE f_1281(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) -> f_1291(v13890, v13891, v13892, v13893, v13894, 1, v13896, v13897, 0, v13899, v13900, v13901, v13902, 3, 4) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_1291(v13890:0, v13891:0, v13892:0, v13893:0, v13894:0, 1, v13896:0, v13897:0, 0, 1 + v17695:0, v13900:0, v13901:0, v13902:0, 3, 4) -> f_1291(v13890:0, v13891:0, v13892:0, v13893:0, v13894:0, 1, 1 + v17695:0, v13897:0, 0, v17695:0, v13900:0, v13901:0, v13902:0, 3, 4) :|: v13896:0 > 1 && v17695:0 > -1 && v13894:0 > 1 Filtered unneeded arguments: f_1291(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_1291(x5, x7, x10) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_1291(v13894:0, v13896:0, sum~cons_1~v17695:0) -> f_1291(v13894:0, 1 + v17695:0, v17695:0) :|: v17695:0 > -1 && v13894:0 > 1 && v13896:0 > 1 && sum~cons_1~v17695:0 = 1 + v17695:0 ---------------------------------------- (65) Obligation: Rules: f_1291(v13894:0, v13896:0, sum~cons_1~v17695:0) -> f_1291(v13894:0, 1 + v17695:0, v17695:0) :|: v17695:0 > -1 && v13894:0 > 1 && v13896:0 > 1 && sum~cons_1~v17695:0 = 1 + v17695:0 ---------------------------------------- (66) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1291_3,1) ---------------------------------------- (67) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX2 - 1; assume(oldX3 > -1 && oldX0 > 1 && oldX1 > 1 && oldX2 = 1 + oldX3); x0 := oldX0; x1 := 1 + oldX3; x2 := oldX2 - 1; TO: 1; ---------------------------------------- (68) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x2 RF for loc. 6: 2*x2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 2*x2 RF for loc. 6: -1+2*x2 Bound for (chained) transitions 3: 1 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (69) YES ---------------------------------------- (70) Obligation: SCC ---------------------------------------- (71) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 56 rulesP rules: f_1048(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9027, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1060(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9027, v9028, v9029, v9030, 0, 3, 2, 4) :|: 1 + v9221 = v9020 && 0 <= v9221 f_1060(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9027, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1074(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9027, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1074(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9027, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1087(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1087(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1103(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1103(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1116(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1116(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1129(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1129(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1143(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1143(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9221, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1156(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1156(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1166(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: v9221 != 0 && 2 <= v9020 && 3 <= v9018 f_1166(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1176(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1176(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1187(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1187(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9022, v9020, v9023, v9024, v9025, v9647, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1200(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1200(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1212(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 < v9647 f_1212(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1226(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1226(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1239(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1239(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1252(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1252(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9020, v9023, v9024, v9025, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1264(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9023, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1264(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9023, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1276(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9023, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1276(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9023, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1288(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9023, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1288(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v9023, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1300(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1300(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1313(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: v14170 != 0 f_1300(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1314(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9028, v9029, v9030, 3, 2, 4) :|: v14170 = 0 f_1313(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1326(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1326(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1339(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1339(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1035(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, v14170, v9024, v9025, v9020, v9647, v9028, v9029, v9030, 0, 3, 2, 4) :|: TRUE f_1035(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9026, v9027, v9028, v9029, v9030, 0, 3, 2, 4) -> f_1048(v9015, v9016, v9017, v9018, v9019, v9020, 1, v9022, v9023, v9024, v9025, v9027, v9028, v9029, v9030, 0, 3, 2, 4) :|: 0 = 0 f_1314(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9028, v9029, v9030, 3, 2, 4) -> f_1327(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9028, v9029, v9030, 3, 2, 4) :|: 0 = 0 f_1327(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9028, v9029, v9030, 3, 2, 4) -> f_1340(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9028, v9029, v9030, 3, 2, 4) :|: TRUE f_1340(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9028, v9029, v9030, 3, 2, 4) -> f_1037(v9015, v9016, v9017, v9018, v9019, v9221, 1, v9647, 0, v9024, v9025, v9020, v9647, v9028, v9029, v9030, 3, 2, 4) :|: TRUE f_1037(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9086, v9087, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) -> f_1049(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9087, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) :|: 0 = 0 f_1049(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9087, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) -> f_1061(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9222, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) :|: 1 + v9222 = v9084 && 0 <= v9222 f_1061(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9222, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) -> f_1075(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9222, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) :|: TRUE f_1075(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9222, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) -> f_1088(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9222, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) :|: TRUE f_1088(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9222, v9088, v9089, v9090, v9091, v9092, 3, 2, 4) -> f_1089(v9077, v9078, v9079, v9080, v9081, v9082, 1, v9084, 0, v9088, v9089, v9222, v9090, v9091, v9092, 3, 2, 4) :|: TRUE f_1089(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) -> f_1104(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1104(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) -> f_1117(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1117(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) -> f_1130(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1130(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) -> f_1144(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1144(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) -> f_1157(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1157(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9691, 0, v9693, v9694, v9695, v9696, v9697, v9698, 3, 2, 4) -> f_1168(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1168(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1178(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 < v9695 && 2 <= v9691 && 2 <= v9694 f_1178(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1189(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1189(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1202(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1202(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1215(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1215(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1228(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1228(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1241(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1241(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1254(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1254(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1266(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1266(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1277(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: v13636 != 0 f_1266(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1278(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: v13636 = 0 f_1277(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1289(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, v9693, v9694, v9691, v9696, v9697, v9698, 0, 3, 2, 4) :|: 0 = 0 f_1289(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, v9693, v9694, v9691, v9696, v9697, v9698, 0, 3, 2, 4) -> f_1301(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, v9693, v9694, v9691, v9696, v9697, v9698, 0, 3, 2, 4) :|: TRUE f_1301(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, v9693, v9694, v9691, v9696, v9697, v9698, 0, 3, 2, 4) -> f_1035(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, v13636, v9691, v9695, v9693, v9694, v9696, v9697, v9698, 0, 3, 2, 4) :|: TRUE f_1278(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1290(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: 0 = 0 f_1290(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1302(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) :|: TRUE f_1302(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9693, v9694, v9691, v9696, v9697, v9698, 3, 2, 4) -> f_1037(v9684, v9685, v9686, v9687, v9688, v9689, 1, v9695, 0, v9691, v9695, v9693, v9694, v9696, v9697, v9698, 3, 2, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_1048(v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, 1 + v9221:0, 1, v9022:0, v9023:0, v9024:0, v9025:0, v9027:0, v9028:0, v9029:0, v9030:0, 0, 3, 2, 4) -> f_1266(v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9221:0, 1, v9222:0, v13636:0, 0, 1 + v9221:0, 1 + v9222:0, 1 + v9222:0, v9028:0, v9029:0, v9030:0, 3, 2, 4) :|: v9221:0 > 0 && v9222:0 > 0 && v9018:0 > 2 f_1266(v9684:0, v9685:0, v9686:0, v9687:0, v9688:0, v9689:0, 1, v9695:0, v13636:0, 0, v9693:0, v9694:0, v9691:0, v9696:0, v9697:0, v9698:0, 3, 2, 4) -> f_1048(v9684:0, v9685:0, v9686:0, v9687:0, v9688:0, v9689:0, 1, v9695:0, v13636:0, v9691:0, v9695:0, v9694:0, v9696:0, v9697:0, v9698:0, 0, 3, 2, 4) :|: v13636:0 < 0 f_1266(v9684:0, v9685:0, v9686:0, v9687:0, v9688:0, v9689:0, 1, v9695:0, v13636:0, 0, v9693:0, v9694:0, v9691:0, v9696:0, v9697:0, v9698:0, 3, 2, 4) -> f_1048(v9684:0, v9685:0, v9686:0, v9687:0, v9688:0, v9689:0, 1, v9695:0, v13636:0, v9691:0, v9695:0, v9694:0, v9696:0, v9697:0, v9698:0, 0, 3, 2, 4) :|: v13636:0 > 0 f_1266(v9684:0, v9685:0, v9686:0, v9687:0, v9688:0, v9689:0, 1, 1 + v9222:0, 0, 0, v9693:0, v9694:0, v9691:0, v9696:0, v9697:0, v9698:0, 3, 2, 4) -> f_1266(v9684:0, v9685:0, v9686:0, v9687:0, v9688:0, v9689:0, 1, v9222:0, v13636:1, 0, v9693:0, v9694:0, 1 + v9222:0, v9696:0, v9697:0, v9698:0, 3, 2, 4) :|: v9222:0 > 0 && v9694:0 > 1 f_1048(v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, 1 + v9221:0, 1, v9022:0, v9023:0, v9024:0, v9025:0, v9027:0, v9028:0, v9029:0, v9030:0, 0, 3, 2, 4) -> f_1048(v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9221:0, 1, v9647:0, v14170:0, v9024:0, v9025:0, v9647:0, v9028:0, v9029:0, v9030:0, 0, 3, 2, 4) :|: v9221:0 > 0 && v9018:0 > 2 && v14170:0 < 0 && v9647:0 > 0 f_1048(v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, 1 + v9221:0, 1, v9022:0, v9023:0, v9024:0, v9025:0, v9027:0, v9028:0, v9029:0, v9030:0, 0, 3, 2, 4) -> f_1048(v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9221:0, 1, v9647:0, v14170:0, v9024:0, v9025:0, v9647:0, v9028:0, v9029:0, v9030:0, 0, 3, 2, 4) :|: v9221:0 > 0 && v9018:0 > 2 && v14170:0 > 0 && v9647:0 > 0 Filtered unneeded arguments: f_1048(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_1048(x4, x6) f_1266(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_1266(x4, x6, x8, x9, x12) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_1048(v9018:0, sum~cons_1~v9221:0) -> f_1266(v9018:0, v9221:0, v9222:0, v13636:0, 1 + v9222:0) :|: v9222:0 > 0 && v9018:0 > 2 && v9221:0 > 0 && sum~cons_1~v9221:0 = 1 + v9221:0 f_1266(v9687:0, v9689:0, v9695:0, v13636:0, v9694:0) -> f_1048(v9687:0, v9689:0) :|: v13636:0 < 0 f_1266(v9687:0, v9689:0, v9695:0, v13636:0, v9694:0) -> f_1048(v9687:0, v9689:0) :|: v13636:0 > 0 f_1266(v9687:0, v9689:0, sum~cons_1~v9222:0, cons_0, v9694:0) -> f_1266(v9687:0, v9689:0, v9222:0, v13636:1, v9694:0) :|: v9222:0 > 0 && v9694:0 > 1 && sum~cons_1~v9222:0 = 1 + v9222:0 && cons_0 = 0 f_1048(v9018:0, sum~cons_1~v9221:0) -> f_1048(v9018:0, v9221:0) :|: v9221:0 > 0 && v9018:0 > 2 && sum~cons_1~v9221:0 = 1 + v9221:0 ---------------------------------------- (72) Obligation: Rules: f_1048(v9018:0, sum~cons_1~v9221:0) -> f_1266(v9018:0, v9221:0, v9222:0, v13636:0, 1 + v9222:0) :|: v9222:0 > 0 && v9018:0 > 2 && v9221:0 > 0 && sum~cons_1~v9221:0 = 1 + v9221:0 f_1266(x, x1, x2, x3, x4) -> f_1048(x, x1) :|: x3 < 0 f_1266(x5, x6, x7, x8, x9) -> f_1048(x5, x6) :|: x8 > 0 f_1266(x10, x11, x12, x13, x14) -> f_1266(x10, x11, x15, x16, x14) :|: x15 > 0 && x14 > 1 && x12 = 1 + x15 && x13 = 0 f_1048(x17, x18) -> f_1048(x17, x19) :|: x19 > 0 && x17 > 2 && x18 = 1 + x19 ---------------------------------------- (73) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1048_5,1) (f_1266_5,2) ---------------------------------------- (74) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; oldX6 := nondet(); oldX7 := nondet(); assume(oldX6 > 0 && oldX0 > 2 && oldX5 > 0 && oldX1 = 1 + oldX5); x0 := oldX0; x1 := oldX1 - 1; x2 := oldX6; x3 := oldX7; x4 := 1 + oldX6; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); oldX6 := nondet(); oldX7 := nondet(); assume(oldX3 < 0); x0 := oldX0; x1 := oldX1; x2 := oldX5; x3 := oldX6; x4 := oldX7; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); oldX6 := nondet(); oldX7 := nondet(); assume(oldX3 > 0); x0 := oldX0; x1 := oldX1; x2 := oldX5; x3 := oldX6; x4 := oldX7; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX2 - 1; oldX6 := nondet(); assume(oldX5 > 0 && oldX4 > 1 && oldX2 = 1 + oldX5 && oldX3 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2 - 1; x3 := oldX6; x4 := oldX4; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; oldX6 := nondet(); oldX7 := nondet(); oldX8 := nondet(); assume(oldX5 > 0 && oldX0 > 2 && oldX1 = 1 + oldX5); x0 := oldX0; x1 := oldX1 - 1; x2 := oldX6; x3 := oldX7; x4 := oldX8; TO: 1; ---------------------------------------- (75) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 14, 17, 18, 19 using the following rank functions: - Rank function 1: RF for loc. 6: -3+5*x1 RF for loc. 7: 5*x1 RF for loc. 8: -4+5*x1 RF for loc. 12: 5*x1 Bound for (chained) transitions 5: 6 - Rank function 2: RF for loc. 6: -1+3*x2 RF for loc. 7: 2+3*x2 RF for loc. 8: -1+3*x2 RF for loc. 12: 3*x2 Bound for (chained) transitions 19: 6 - Rank function 3: RF for loc. 6: -1 RF for loc. 7: 1 RF for loc. 8: -1 RF for loc. 12: 0 Bound for (chained) transitions 17: 0 Bound for (chained) transitions 18: 0 - Rank function 4: RF for loc. 6: 2*x1 RF for loc. 7: 0 RF for loc. 8: -1+2*x1 RF for loc. 12: -1 Bound for (chained) transitions 6: 3 Bound for (chained) transitions 14: 0 - Rank function 5: RF for loc. 6: 0 RF for loc. 8: -1 Bound for (chained) transitions 2: 0 ---------------------------------------- (76) YES ---------------------------------------- (77) Obligation: SCC ---------------------------------------- (78) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 26 rulesP rules: f_661(v2154, v2155, v2156, v2157, v2158, v2159, 1, v2161, 0, v2163, v2164, v2165, v2166, v2167, 3, 4) -> f_666(v2154, v2155, v2156, v2157, v2158, v2159, 1, v2161, 0, v2163, v2164, v2165, v2166, v2167, 3, 4) :|: TRUE f_666(v2154, v2155, v2156, v2157, v2158, v2159, 1, v2161, 0, v2163, v2164, v2165, v2166, v2167, 3, 4) -> f_671(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) :|: 0 = 0 f_671(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) -> f_677(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) :|: v2164 != 0 f_677(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) -> f_685(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) :|: 0 = 0 f_685(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) -> f_694(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) :|: TRUE f_694(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2161, v2159, 0, v2163, v2165, v2166, v2167, 3, 4) -> f_702(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 4) :|: 0 = 0 f_702(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 4) -> f_712(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: 0 < v2163 && 2 <= v2161 && 2 <= v2158 f_712(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_723(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: 0 = 0 f_723(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_733(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: 0 = 0 f_733(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_742(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_742(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, v2159, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_751(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: 0 = 0 f_751(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_761(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: v2164 <= 0 f_761(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_770(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: 0 = 0 f_770(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_779(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_779(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_787(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2896, v2161, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_787(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2896, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_798(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: v2896 = 0 f_798(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_809(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: 0 = 0 f_809(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_820(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_820(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2161, v2165, v2166, v2167, 3, 2, 4) -> f_832(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2165, v2166, v2167, 3, 2, 4) :|: 0 = 0 f_832(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v2165, v2166, v2167, 3, 2, 4) -> f_846(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v2165, v2166, v2167, 3, 2, 4) :|: 1 + v3556 = v2163 && 0 <= v3556 f_846(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v2165, v2166, v2167, 3, 2, 4) -> f_859(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_859(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v2165, v2166, v2167, 3, 2, 4) -> f_871(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_871(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 2, 4) -> f_883(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_883(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 2, 4) -> f_894(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 2, 4) :|: TRUE f_894(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 2, 4) -> f_656(v2154, v2155, v2156, v2157, v2158, v2164, 1, v2163, 0, v3556, v4459, v2165, v2166, v2167, 3, 4) :|: TRUE f_656(v2154, v2155, v2156, v2157, v2158, v2159, 1, v2161, 0, v2163, v2164, v2165, v2166, v2167, 3, 4) -> f_661(v2154, v2155, v2156, v2157, v2158, v2159, 1, v2161, 0, v2163, v2164, v2165, v2166, v2167, 3, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_661(v2154:0, v2155:0, v2156:0, v2157:0, v2158:0, v2159:0, 1, v2161:0, 0, 1 + v3556:0, v2164:0, v2165:0, v2166:0, v2167:0, 3, 4) -> f_661(v2154:0, v2155:0, v2156:0, v2157:0, v2158:0, v2164:0, 1, 1 + v3556:0, 0, v3556:0, v4459:0, v2165:0, v2166:0, v2167:0, 3, 4) :|: v2164:0 < 0 && v2161:0 > 1 && v3556:0 > -1 && v2158:0 > 1 && v2164:0 < 1 f_661(v2154:0, v2155:0, v2156:0, v2157:0, v2158:0, v2159:0, 1, v2161:0, 0, 1 + v3556:0, v2164:0, v2165:0, v2166:0, v2167:0, 3, 4) -> f_661(v2154:0, v2155:0, v2156:0, v2157:0, v2158:0, v2164:0, 1, 1 + v3556:0, 0, v3556:0, v4459:0, v2165:0, v2166:0, v2167:0, 3, 4) :|: v2164:0 > 0 && v2161:0 > 1 && v3556:0 > -1 && v2158:0 > 1 && v2164:0 < 1 Filtered unneeded arguments: f_661(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_661(x5, x8, x10, x11) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_661(v2158:0, v2161:0, sum~cons_1~v3556:0, v2164:0) -> f_661(v2158:0, 1 + v3556:0, v3556:0, v4459:0) :|: v2161:0 > 1 && v2164:0 < 0 && v3556:0 > -1 && v2164:0 < 1 && v2158:0 > 1 && sum~cons_1~v3556:0 = 1 + v3556:0 f_661(v2158:0, v2161:0, sum~cons_1~v3556:0, v2164:0) -> f_661(v2158:0, 1 + v3556:0, v3556:0, v4459:0) :|: v2161:0 > 1 && v2164:0 > 0 && v3556:0 > -1 && v2164:0 < 1 && v2158:0 > 1 && sum~cons_1~v3556:0 = 1 + v3556:0 ---------------------------------------- (79) Obligation: Rules: f_661(v2158:0, v2161:0, sum~cons_1~v3556:0, v2164:0) -> f_661(v2158:0, 1 + v3556:0, v3556:0, v4459:0) :|: v2161:0 > 1 && v2164:0 < 0 && v3556:0 > -1 && v2164:0 < 1 && v2158:0 > 1 && sum~cons_1~v3556:0 = 1 + v3556:0 f_661(x, x1, x2, x3) -> f_661(x, 1 + x4, x4, x5) :|: x1 > 1 && x3 > 0 && x4 > -1 && x3 < 1 && x > 1 && x2 = 1 + x4 ---------------------------------------- (80) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_661_4,1) ---------------------------------------- (81) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX2 - 1; oldX5 := nondet(); assume(oldX1 > 1 && oldX3 < 0 && oldX4 > -1 && oldX3 < 1 && oldX0 > 1 && oldX2 = 1 + oldX4); x0 := oldX0; x1 := 1 + oldX4; x2 := oldX2 - 1; x3 := oldX5; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX2 - 1; oldX5 := nondet(); assume(oldX1 > 1 && oldX3 > 0 && oldX4 > -1 && oldX3 < 1 && oldX0 > 1 && oldX2 = 1 + oldX4); x0 := oldX0; x1 := 1 + oldX4; x2 := oldX2 - 1; x3 := oldX5; TO: 1; ---------------------------------------- (82) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 4, 5 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x2 RF for loc. 6: 2*x2 Bound for (chained) transitions 4: 2 Bound for (chained) transitions 5: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (83) YES ---------------------------------------- (84) Obligation: SCC ---------------------------------------- (85) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 25 rulesP rules: f_638(v1819, v1820, v1821, v1822, v1823, v1824, 1, v1826, v1827, v1828, v1829, v1830, v1831, v1832, 0, 3, 4) -> f_647(v1819, v1820, v1821, v1822, v1823, v1824, 1, v1826, v1827, v1828, v1829, v1830, v1831, v1832, 0, 3, 4) :|: TRUE f_647(v1819, v1820, v1821, v1822, v1823, v1824, 1, v1826, v1827, v1828, v1829, v1830, v1831, v1832, 0, 3, 4) -> f_657(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 4) :|: 0 = 0 f_657(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 4) -> f_662(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 2, 4) :|: v1828 != 0 && 2 <= v1824 && 2 <= v1822 f_662(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 2, 4) -> f_667(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_667(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 2, 4) -> f_672(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_672(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1826, v1824, v1827, v1829, v1830, v1831, v1832, 0, 3, 2, 4) -> f_679(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_679(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) -> f_687(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 < v1829 f_687(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) -> f_696(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_696(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) -> f_704(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_704(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) -> f_715(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_715(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1824, v1827, v1830, v1831, v1832, 0, 3, 2, 4) -> f_725(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1827, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_725(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1827, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_735(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1827, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_735(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1827, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_744(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1827, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_744(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v1827, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_753(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_753(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_762(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: v2568 != 0 f_762(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_771(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_771(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_780(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_780(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1824, v1830, v1831, v1832, 0, 3, 2, 4) -> f_788(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1830, v1831, v1832, 0, 3, 2, 4) :|: 0 = 0 f_788(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v1830, v1831, v1832, 0, 3, 2, 4) -> f_799(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v1830, v1831, v1832, 0, 3, 2, 4) :|: 1 + v3008 = v1828 && 0 <= v3008 f_799(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v1830, v1831, v1832, 0, 3, 2, 4) -> f_810(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_810(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v1830, v1831, v1832, 0, 3, 2, 4) -> f_821(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_821(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 2, 4) -> f_833(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_833(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 2, 4) -> f_847(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 2, 4) :|: TRUE f_847(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 2, 4) -> f_629(v1819, v1820, v1821, v1822, v1823, v1828, 1, v1829, v2568, v3008, v3318, v1830, v1831, v1832, 0, 3, 4) :|: TRUE f_629(v1819, v1820, v1821, v1822, v1823, v1824, 1, v1826, v1827, v1828, v1829, v1830, v1831, v1832, 0, 3, 4) -> f_638(v1819, v1820, v1821, v1822, v1823, v1824, 1, v1826, v1827, v1828, v1829, v1830, v1831, v1832, 0, 3, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_638(v1819:0, v1820:0, v1821:0, v1822:0, v1823:0, v1824:0, 1, v1826:0, v1827:0, 1 + v3008:0, v1829:0, v1830:0, v1831:0, v1832:0, 0, 3, 4) -> f_638(v1819:0, v1820:0, v1821:0, v1822:0, v1823:0, 1 + v3008:0, 1, v1829:0, v2568:0, v3008:0, v3318:0, v1830:0, v1831:0, v1832:0, 0, 3, 4) :|: v1824:0 > 1 && v3008:0 > -1 && v1822:0 > 1 && v1829:0 > 0 && v2568:0 < 0 f_638(v1819:0, v1820:0, v1821:0, v1822:0, v1823:0, v1824:0, 1, v1826:0, v1827:0, 1 + v3008:0, v1829:0, v1830:0, v1831:0, v1832:0, 0, 3, 4) -> f_638(v1819:0, v1820:0, v1821:0, v1822:0, v1823:0, 1 + v3008:0, 1, v1829:0, v2568:0, v3008:0, v3318:0, v1830:0, v1831:0, v1832:0, 0, 3, 4) :|: v1824:0 > 1 && v3008:0 > -1 && v1822:0 > 1 && v1829:0 > 0 && v2568:0 > 0 Filtered unneeded arguments: f_638(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17) -> f_638(x4, x6, x10, x11) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_638(v1822:0, v1824:0, sum~cons_1~v3008:0, v1829:0) -> f_638(v1822:0, 1 + v3008:0, v3008:0, v3318:0) :|: v3008:0 > -1 && v1824:0 > 1 && v1829:0 > 0 && v1822:0 > 1 && sum~cons_1~v3008:0 = 1 + v3008:0 ---------------------------------------- (86) Obligation: Rules: f_638(v1822:0, v1824:0, sum~cons_1~v3008:0, v1829:0) -> f_638(v1822:0, 1 + v3008:0, v3008:0, v3318:0) :|: v3008:0 > -1 && v1824:0 > 1 && v1829:0 > 0 && v1822:0 > 1 && sum~cons_1~v3008:0 = 1 + v3008:0 ---------------------------------------- (87) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_638_4,1) ---------------------------------------- (88) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX2 - 1; oldX5 := nondet(); assume(oldX4 > -1 && oldX1 > 1 && oldX3 > 0 && oldX0 > 1 && oldX2 = 1 + oldX4); x0 := oldX0; x1 := 1 + oldX4; x2 := oldX2 - 1; x3 := oldX5; TO: 1; ---------------------------------------- (89) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x2 RF for loc. 6: 2*x2 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 1: 1 ---------------------------------------- (90) YES ---------------------------------------- (91) Obligation: SCC ---------------------------------------- (92) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 23 rulesP rules: f_596(v1706, v1707, v1708, v1709, v1710, v1711, 1, 0, v1714, v1715, v1716, v1717, v1718, 3, 4) -> f_604(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_604(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_612(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: v1715 != 0 f_612(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_622(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_622(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_632(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: TRUE f_632(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_641(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_641(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_650(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_650(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_660(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_660(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_665(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) :|: TRUE f_665(v1706, v1707, v1708, v1709, v1710, v1715, 1, v1711, 0, v1714, v1716, v1717, v1718, 3, 4) -> f_670(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_670(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) -> f_676(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) :|: v1715 <= 0 && 1 + v1711 <= 0 && 1 + v1709 <= 0 f_676(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) -> f_684(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_684(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) -> f_693(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) :|: TRUE f_693(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v1714, v1711, v1716, v1717, v1718, 3, 4) -> f_701(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) :|: TRUE f_701(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) -> f_710(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) :|: v2305 != 0 f_710(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) -> f_721(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_721(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) -> f_731(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) :|: TRUE f_731(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1711, v1716, v1717, v1718, 3, 4) -> f_740(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1716, v1717, v1718, 3, 4) :|: 0 = 0 f_740(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v1716, v1717, v1718, 3, 4) -> f_749(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) :|: v2566 = 1 + v1715 && v2566 <= 1 f_749(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) -> f_758(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) :|: TRUE f_758(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) -> f_767(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) :|: TRUE f_767(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) -> f_776(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) :|: TRUE f_776(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) -> f_588(v1706, v1707, v1708, v1709, v1710, v1715, 1, 0, v2305, v2566, v1716, v1717, v1718, 3, 4) :|: TRUE f_588(v1706, v1707, v1708, v1709, v1710, v1711, 1, 0, v1714, v1715, v1716, v1717, v1718, 3, 4) -> f_596(v1706, v1707, v1708, v1709, v1710, v1711, 1, 0, v1714, v1715, v1716, v1717, v1718, 3, 4) :|: TRUE Combined rules. Obtained 4 rulesP rules: f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1711:0, 1, 0, v1714:0, v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) -> f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1715:0, 1, 0, v2305:0, 1 + v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) :|: v1715:0 < 0 && v1711:0 < 0 && v1715:0 < 1 && v1709:0 < 0 && v2305:0 < 0 f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1711:0, 1, 0, v1714:0, v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) -> f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1715:0, 1, 0, v2305:0, 1 + v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) :|: v1715:0 < 0 && v1711:0 < 0 && v1715:0 < 1 && v1709:0 < 0 && v2305:0 > 0 f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1711:0, 1, 0, v1714:0, v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) -> f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1715:0, 1, 0, v2305:0, 1 + v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) :|: v1715:0 > 0 && v1711:0 < 0 && v1715:0 < 1 && v1709:0 < 0 && v2305:0 < 0 f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1711:0, 1, 0, v1714:0, v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) -> f_596(v1706:0, v1707:0, v1708:0, v1709:0, v1710:0, v1715:0, 1, 0, v2305:0, 1 + v1715:0, v1716:0, v1717:0, v1718:0, 3, 4) :|: v1715:0 > 0 && v1711:0 < 0 && v1715:0 < 1 && v1709:0 < 0 && v2305:0 > 0 Filtered unneeded arguments: f_596(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_596(x4, x6, x10) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_596(v1709:0, v1711:0, v1715:0) -> f_596(v1709:0, v1715:0, 1 + v1715:0) :|: v1711:0 < 0 && v1715:0 < 0 && v1709:0 < 0 && v1715:0 < 1 f_596(v1709:0, v1711:0, v1715:0) -> f_596(v1709:0, v1715:0, 1 + v1715:0) :|: v1711:0 < 0 && v1715:0 > 0 && v1709:0 < 0 && v1715:0 < 1 ---------------------------------------- (93) Obligation: Rules: f_596(v1709:0, v1711:0, v1715:0) -> f_596(v1709:0, v1715:0, 1 + v1715:0) :|: v1711:0 < 0 && v1715:0 < 0 && v1709:0 < 0 && v1715:0 < 1 f_596(x, x1, x2) -> f_596(x, x2, 1 + x2) :|: x1 < 0 && x2 > 0 && x < 0 && x2 < 1 ---------------------------------------- (94) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_596_3,1) ---------------------------------------- (95) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(oldX1 < 0 && oldX2 < 0 && oldX0 < 0 && oldX2 < 1); x0 := oldX0; x1 := oldX2; x2 := 1 + oldX2; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(oldX1 < 0 && oldX2 > 0 && oldX0 < 0 && oldX2 < 1); x0 := oldX0; x1 := oldX2; x2 := 1 + oldX2; TO: 1; ---------------------------------------- (96) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 4, 5 using the following rank functions: - Rank function 1: RF for loc. 5: 1-2*x2 RF for loc. 6: -2*x2 Bound for (chained) transitions 4: 0 Bound for (chained) transitions 5: 0 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (97) YES ---------------------------------------- (98) Obligation: SCC ---------------------------------------- (99) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 22 rulesP rules: f_584(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) -> f_595(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) :|: 0 = 0 f_595(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) -> f_603(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) :|: TRUE f_603(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) -> f_611(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 4) :|: 0 = 0 f_611(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 4) -> f_620(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: 0 < v1642 && 2 <= v1640 && 2 <= v1638 f_620(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_630(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: 0 = 0 f_630(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_639(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: 0 = 0 f_639(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_648(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_648(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_658(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: 0 = 0 f_658(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_664(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: 0 = 0 f_664(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_669(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_669(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_674(v1634, v1635, v1636, v1637, v1638, 1, v1642, v2254, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_674(v1634, v1635, v1636, v1637, v1638, 1, v1642, v2254, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_682(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: v2254 = 0 f_682(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_691(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: 0 = 0 f_691(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_699(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_699(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1640, v1643, v1644, v1645, 3, 2, 4) -> f_707(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1643, v1644, v1645, 3, 2, 4) :|: 0 = 0 f_707(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v1643, v1644, v1645, 3, 2, 4) -> f_718(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) :|: 1 + v2422 = v1642 && 0 <= v2422 f_718(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) -> f_728(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_728(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) -> f_737(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_737(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) -> f_746(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_746(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) -> f_755(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) :|: TRUE f_755(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 2, 4) -> f_573(v1634, v1635, v1636, v1637, v1638, 1, v1642, 0, v2422, v1643, v1644, v1645, 3, 4) :|: TRUE f_573(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) -> f_584(v1634, v1635, v1636, v1637, v1638, 1, v1640, 0, v1642, v1643, v1644, v1645, 3, 4) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_584(v1634:0, v1635:0, v1636:0, v1637:0, v1638:0, 1, v1640:0, 0, 1 + v2422:0, v1643:0, v1644:0, v1645:0, 3, 4) -> f_584(v1634:0, v1635:0, v1636:0, v1637:0, v1638:0, 1, 1 + v2422:0, 0, v2422:0, v1643:0, v1644:0, v1645:0, 3, 4) :|: v1640:0 > 1 && v2422:0 > -1 && v1638:0 > 1 Filtered unneeded arguments: f_584(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_584(x5, x7, x9) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_584(v1638:0, v1640:0, sum~cons_1~v2422:0) -> f_584(v1638:0, 1 + v2422:0, v2422:0) :|: v2422:0 > -1 && v1638:0 > 1 && v1640:0 > 1 && sum~cons_1~v2422:0 = 1 + v2422:0 ---------------------------------------- (100) Obligation: Rules: f_584(v1638:0, v1640:0, sum~cons_1~v2422:0) -> f_584(v1638:0, 1 + v2422:0, v2422:0) :|: v2422:0 > -1 && v1638:0 > 1 && v1640:0 > 1 && sum~cons_1~v2422:0 = 1 + v2422:0 ---------------------------------------- (101) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_584_3,1) ---------------------------------------- (102) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX2 - 1; assume(oldX3 > -1 && oldX0 > 1 && oldX1 > 1 && oldX2 = 1 + oldX3); x0 := oldX0; x1 := 1 + oldX3; x2 := oldX2 - 1; TO: 1; ---------------------------------------- (103) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x2 RF for loc. 6: 2*x2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 2*x2 RF for loc. 6: -1+2*x2 Bound for (chained) transitions 3: 1 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (104) YES