183.69/49.75 YES 187.75/50.75 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 187.75/50.75 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 187.75/50.75 187.75/50.75 187.75/50.75 Termination of the given C Problem could be proven: 187.75/50.75 187.75/50.75 (0) C Problem 187.75/50.75 (1) CToLLVMProof [EQUIVALENT, 175 ms] 187.75/50.75 (2) LLVM problem 187.75/50.75 (3) LLVMToTerminationGraphProof [EQUIVALENT, 6540 ms] 187.75/50.75 (4) LLVM Symbolic Execution Graph 187.75/50.75 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 187.75/50.75 (6) AND 187.75/50.75 (7) LLVM Symbolic Execution SCC 187.75/50.75 (8) SCC2IRS [SOUND, 147 ms] 187.75/50.75 (9) IntTRS 187.75/50.75 (10) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (11) T2IntSys 187.75/50.75 (12) T2 [EQUIVALENT, 2 ms] 187.75/50.75 (13) YES 187.75/50.75 (14) LLVM Symbolic Execution SCC 187.75/50.75 (15) SCC2IRS [SOUND, 63 ms] 187.75/50.75 (16) IntTRS 187.75/50.75 (17) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (18) T2IntSys 187.75/50.75 (19) T2 [EQUIVALENT, 822 ms] 187.75/50.75 (20) YES 187.75/50.75 (21) LLVM Symbolic Execution SCC 187.75/50.75 (22) SCC2IRS [SOUND, 45 ms] 187.75/50.75 (23) IntTRS 187.75/50.75 (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] 187.75/50.75 (25) IntTRS 187.75/50.75 (26) RankingReductionPairProof [EQUIVALENT, 0 ms] 187.75/50.75 (27) YES 187.75/50.75 (28) LLVM Symbolic Execution SCC 187.75/50.75 (29) SCC2IRS [SOUND, 64 ms] 187.75/50.75 (30) IntTRS 187.75/50.75 (31) IntTRSCompressionProof [EQUIVALENT, 0 ms] 187.75/50.75 (32) IntTRS 187.75/50.75 (33) RankingReductionPairProof [EQUIVALENT, 7 ms] 187.75/50.75 (34) YES 187.75/50.75 (35) LLVM Symbolic Execution SCC 187.75/50.75 (36) SCC2IRS [SOUND, 201 ms] 187.75/50.75 (37) IntTRS 187.75/50.75 (38) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (39) T2IntSys 187.75/50.75 (40) T2 [EQUIVALENT, 803 ms] 187.75/50.75 (41) YES 187.75/50.75 (42) LLVM Symbolic Execution SCC 187.75/50.75 (43) SCC2IRS [SOUND, 70 ms] 187.75/50.75 (44) IntTRS 187.75/50.75 (45) IntTRSCompressionProof [EQUIVALENT, 0 ms] 187.75/50.75 (46) IntTRS 187.75/50.75 (47) RankingReductionPairProof [EQUIVALENT, 5 ms] 187.75/50.75 (48) YES 187.75/50.75 (49) LLVM Symbolic Execution SCC 187.75/50.75 (50) SCC2IRS [SOUND, 129 ms] 187.75/50.75 (51) IntTRS 187.75/50.75 (52) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (53) T2IntSys 187.75/50.75 (54) T2 [EQUIVALENT, 1063 ms] 187.75/50.75 (55) YES 187.75/50.75 (56) LLVM Symbolic Execution SCC 187.75/50.75 (57) SCC2IRS [SOUND, 110 ms] 187.75/50.75 (58) IntTRS 187.75/50.75 (59) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (60) T2IntSys 187.75/50.75 (61) T2 [EQUIVALENT, 2 ms] 187.75/50.75 (62) YES 187.75/50.75 (63) LLVM Symbolic Execution SCC 187.75/50.75 (64) SCC2IRS [SOUND, 55 ms] 187.75/50.75 (65) IntTRS 187.75/50.75 (66) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (67) T2IntSys 187.75/50.75 (68) T2 [EQUIVALENT, 1 ms] 187.75/50.75 (69) YES 187.75/50.75 (70) LLVM Symbolic Execution SCC 187.75/50.75 (71) SCC2IRS [SOUND, 95 ms] 187.75/50.75 (72) IntTRS 187.75/50.75 (73) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (74) T2IntSys 187.75/50.75 (75) T2 [EQUIVALENT, 922 ms] 187.75/50.75 (76) YES 187.75/50.75 (77) LLVM Symbolic Execution SCC 187.75/50.75 (78) SCC2IRS [SOUND, 60 ms] 187.75/50.75 (79) IntTRS 187.75/50.75 (80) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (81) T2IntSys 187.75/50.75 (82) T2 [EQUIVALENT, 2 ms] 187.75/50.75 (83) YES 187.75/50.75 (84) LLVM Symbolic Execution SCC 187.75/50.75 (85) SCC2IRS [SOUND, 53 ms] 187.75/50.75 (86) IntTRS 187.75/50.75 (87) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (88) T2IntSys 187.75/50.75 (89) T2 [EQUIVALENT, 2 ms] 187.75/50.75 (90) YES 187.75/50.75 (91) LLVM Symbolic Execution SCC 187.75/50.75 (92) SCC2IRS [SOUND, 42 ms] 187.75/50.75 (93) IntTRS 187.75/50.75 (94) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (95) T2IntSys 187.75/50.75 (96) T2 [EQUIVALENT, 1 ms] 187.75/50.75 (97) YES 187.75/50.75 (98) LLVM Symbolic Execution SCC 187.75/50.75 (99) SCC2IRS [SOUND, 22 ms] 187.75/50.75 (100) IntTRS 187.75/50.75 (101) IRS2T2 [EQUIVALENT, 0 ms] 187.75/50.75 (102) T2IntSys 187.75/50.75 (103) T2 [EQUIVALENT, 792 ms] 187.75/50.75 (104) YES 187.75/50.75 187.75/50.75 187.75/50.75 ---------------------------------------- 187.75/50.75 187.75/50.75 (0) 187.75/50.75 Obligation: 187.75/50.75 c file /export/starexec/sandbox/benchmark/theBenchmark.c 187.75/50.75 ---------------------------------------- 187.75/50.75 187.75/50.75 (1) CToLLVMProof (EQUIVALENT) 187.75/50.75 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 187.75/50.75 ---------------------------------------- 187.75/50.75 187.75/50.75 (2) 187.75/50.75 Obligation: 187.75/50.75 LLVM Problem 187.75/50.75 187.75/50.75 Aliases: 187.75/50.75 187.75/50.75 Data layout: 187.75/50.75 187.75/50.75 "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" 187.75/50.75 187.75/50.75 Machine: 187.75/50.75 187.75/50.75 "x86_64-pc-linux-gnu" 187.75/50.75 187.75/50.75 Type definitions: 187.75/50.75 187.75/50.75 Global variables: 187.75/50.75 187.75/50.75 Function declarations and definitions: 187.75/50.75 187.75/50.75 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 187.75/50.75 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 187.75/50.75 0: 187.75/50.75 %1 = alloca i32, align 4 187.75/50.75 %x = alloca i32, align 4 187.75/50.75 %y = alloca i32, align 4 187.75/50.75 store 0, %1 187.75/50.75 %2 = call i32 @__VERIFIER_nondet_int() 187.75/50.75 store %2, %x 187.75/50.75 %3 = call i32 @__VERIFIER_nondet_int() 187.75/50.75 store %3, %y 187.75/50.75 br %4 187.75/50.75 4: 187.75/50.75 %5 = load %x 187.75/50.75 %6 = icmp ne %5 0 187.75/50.75 br %6, %7, %10 187.75/50.75 7: 187.75/50.75 %8 = load %y 187.75/50.75 %9 = icmp sgt %8 0 187.75/50.75 br %10 187.75/50.75 10: 187.75/50.75 %11 = phi [0, %4], [%9, %7] 187.75/50.75 br %11, %12, %38 187.75/50.75 12: 187.75/50.75 %13 = load %x 187.75/50.75 %14 = icmp sgt %13 0 187.75/50.75 br %14, %15, %26 187.75/50.75 15: 187.75/50.75 %16 = call i32 @__VERIFIER_nondet_int() 187.75/50.75 %17 = icmp ne %16 0 187.75/50.75 br %17, %18, %22 187.75/50.75 18: 187.75/50.75 %19 = load %x 187.75/50.75 %20 = sub %19 1 187.75/50.75 store %20, %x 187.75/50.75 %21 = call i32 @__VERIFIER_nondet_int() 187.75/50.75 store %21, %y 187.75/50.75 br %25 187.75/50.75 22: 187.75/50.75 %23 = load %y 187.75/50.75 %24 = sub %23 1 187.75/50.75 store %24, %y 187.75/50.75 br %25 187.75/50.75 25: 187.75/50.75 br %37 187.75/50.75 26: 187.75/50.75 %27 = call i32 @__VERIFIER_nondet_int() 187.75/50.76 %28 = icmp ne %27 0 187.75/50.76 br %28, %29, %32 187.75/50.76 29: 187.75/50.76 %30 = load %x 187.75/50.76 %31 = add %30 1 187.75/50.76 store %31, %x 187.75/50.76 br %36 187.75/50.76 32: 187.75/50.76 %33 = load %y 187.75/50.76 %34 = sub %33 1 187.75/50.76 store %34, %y 187.75/50.76 %35 = call i32 @__VERIFIER_nondet_int() 187.75/50.76 store %35, %x 187.75/50.76 br %36 187.75/50.76 36: 187.75/50.76 br %37 187.75/50.76 37: 187.75/50.76 br %4 187.75/50.76 38: 187.75/50.76 %39 = load %1 187.75/50.76 ret %39 187.75/50.76 187.75/50.76 187.75/50.76 Analyze Termination of all function calls matching the pattern: 187.75/50.76 main() 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (3) LLVMToTerminationGraphProof (EQUIVALENT) 187.75/50.76 Constructed symbolic execution graph for LLVM program and proved memory safety. 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (4) 187.75/50.76 Obligation: 187.75/50.76 SE Graph 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (5) SymbolicExecutionGraphToSCCProof (SOUND) 187.75/50.76 Splitted symbolic execution graph to 14 SCCs. 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (6) 187.75/50.76 Complex Obligation (AND) 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (7) 187.75/50.76 Obligation: 187.75/50.76 SCC 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (8) SCC2IRS (SOUND) 187.75/50.76 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.76 Generated rules. Obtained 56 rulesP rules: 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 Combined rules. Obtained 6 rulesP rules: 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 Filtered unneeded arguments: 187.75/50.76 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) 187.75/50.76 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) 187.75/50.76 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 187.75/50.76 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 187.75/50.76 f_2324(v56055:0, v56066:0, v56063:0, v59531:0, v56065:0) -> f_2273(v56055:0, v56063:0) :|: v59531:0 < 0 187.75/50.76 f_2324(v56055:0, v56066:0, v56063:0, v59531:0, v56065:0) -> f_2273(v56055:0, v56063:0) :|: v59531:0 > 0 187.75/50.76 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 187.75/50.76 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 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (9) 187.75/50.76 Obligation: 187.75/50.76 Rules: 187.75/50.76 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 187.75/50.76 f_2324(x, x1, x2, x3, x4) -> f_2273(x, x2) :|: x3 < 0 187.75/50.76 f_2324(x5, x6, x7, x8, x9) -> f_2273(x5, x7) :|: x8 > 0 187.75/50.76 f_2273(x10, x11) -> f_2324(x12, x13, x11, x14, 1 + x13) :|: x13 > 0 && x11 > 2 && x12 > 0 && x10 = 1 + x12 187.75/50.76 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 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (10) IRS2T2 (EQUIVALENT) 187.75/50.76 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 187.75/50.76 187.75/50.76 (f_2324_5,1) 187.75/50.76 (f_2273_5,2) 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (11) 187.75/50.76 Obligation: 187.75/50.76 START: 0; 187.75/50.76 187.75/50.76 FROM: 0; 187.75/50.76 TO: 1; 187.75/50.76 187.75/50.76 FROM: 0; 187.75/50.76 TO: 2; 187.75/50.76 187.75/50.76 FROM: 1; 187.75/50.76 oldX0 := x0; 187.75/50.76 oldX1 := x1; 187.75/50.76 oldX2 := x2; 187.75/50.76 oldX3 := x3; 187.75/50.76 oldX4 := x4; 187.75/50.76 oldX5 := oldX1 - 1; 187.75/50.76 oldX6 := nondet(); 187.75/50.76 assume(oldX5 > 0 && oldX4 > 1 && oldX1 = 1 + oldX5 && oldX3 = 0); 187.75/50.76 x0 := oldX0; 187.75/50.76 x1 := oldX1 - 1; 187.75/50.76 x2 := oldX2; 187.75/50.76 x3 := oldX6; 187.75/50.76 x4 := oldX4; 187.75/50.76 TO: 1; 187.75/50.76 187.75/50.76 FROM: 1; 187.75/50.76 oldX0 := x0; 187.75/50.76 oldX1 := x1; 187.75/50.76 oldX2 := x2; 187.75/50.76 oldX3 := x3; 187.75/50.76 oldX4 := x4; 187.75/50.76 oldX5 := nondet(); 187.75/50.76 oldX6 := nondet(); 187.75/50.76 oldX7 := nondet(); 187.75/50.76 assume(oldX3 < 0); 187.75/50.76 x0 := oldX0; 187.75/50.76 x1 := oldX2; 187.75/50.76 x2 := oldX5; 187.75/50.76 x3 := oldX6; 187.75/50.76 x4 := oldX7; 187.75/50.76 TO: 2; 187.75/50.76 187.75/50.76 FROM: 1; 187.75/50.76 oldX0 := x0; 187.75/50.76 oldX1 := x1; 187.75/50.76 oldX2 := x2; 187.75/50.76 oldX3 := x3; 187.75/50.76 oldX4 := x4; 187.75/50.76 oldX5 := nondet(); 187.75/50.76 oldX6 := nondet(); 187.75/50.76 oldX7 := nondet(); 187.75/50.76 assume(oldX3 > 0); 187.75/50.76 x0 := oldX0; 187.75/50.76 x1 := oldX2; 187.75/50.76 x2 := oldX5; 187.75/50.76 x3 := oldX6; 187.75/50.76 x4 := oldX7; 187.75/50.76 TO: 2; 187.75/50.76 187.75/50.76 FROM: 2; 187.75/50.76 oldX0 := x0; 187.75/50.76 oldX1 := x1; 187.75/50.76 oldX2 := x2; 187.75/50.76 oldX3 := x3; 187.75/50.76 oldX4 := x4; 187.75/50.76 oldX5 := oldX0 - 1; 187.75/50.76 oldX6 := nondet(); 187.75/50.76 oldX7 := nondet(); 187.75/50.76 assume(oldX6 > 0 && oldX1 > 2 && oldX5 > 0 && oldX0 = 1 + oldX5); 187.75/50.76 x0 := oldX0 - 1; 187.75/50.76 x1 := oldX6; 187.75/50.76 x2 := oldX1; 187.75/50.76 x3 := oldX7; 187.75/50.76 x4 := 1 + oldX6; 187.75/50.76 TO: 1; 187.75/50.76 187.75/50.76 FROM: 2; 187.75/50.76 oldX0 := x0; 187.75/50.76 oldX1 := x1; 187.75/50.76 oldX2 := x2; 187.75/50.76 oldX3 := x3; 187.75/50.76 oldX4 := x4; 187.75/50.76 oldX5 := oldX0 - 1; 187.75/50.76 oldX6 := nondet(); 187.75/50.76 oldX7 := nondet(); 187.75/50.76 oldX8 := nondet(); 187.75/50.76 assume(oldX5 > 0 && oldX1 > 2 && oldX0 = 1 + oldX5); 187.75/50.76 x0 := oldX0 - 1; 187.75/50.76 x1 := oldX1; 187.75/50.76 x2 := oldX6; 187.75/50.76 x3 := oldX7; 187.75/50.76 x4 := oldX8; 187.75/50.76 TO: 2; 187.75/50.76 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (12) T2 (EQUIVALENT) 187.75/50.76 Initially, performed program simplifications using lexicographic rank functions: 187.75/50.76 * Removed transitions 2, 5, 6, 7, 17, 20, 21 using the following rank functions: 187.75/50.76 - Rank function 1: 187.75/50.76 RF for loc. 6: 2+3*x0 187.75/50.76 RF for loc. 7: 1+3*x0 187.75/50.76 RF for loc. 8: 2+3*x0 187.75/50.76 RF for loc. 12: 3*x0 187.75/50.76 Bound for (chained) transitions 20: 6 187.75/50.76 Bound for (chained) transitions 21: 6 187.75/50.76 - Rank function 2: 187.75/50.76 RF for loc. 6: 1 187.75/50.76 RF for loc. 7: 0 187.75/50.76 RF for loc. 8: 1 187.75/50.76 RF for loc. 12: -1 187.75/50.76 Bound for (chained) transitions 6: 1 187.75/50.76 Bound for (chained) transitions 7: 1 187.75/50.76 Bound for (chained) transitions 17: 0 187.75/50.76 - Rank function 3: 187.75/50.76 RF for loc. 6: 1+2*x1 187.75/50.76 RF for loc. 8: 2*x1 187.75/50.76 Bound for (chained) transitions 5: 4 187.75/50.76 - Rank function 4: 187.75/50.76 RF for loc. 6: 0 187.75/50.76 RF for loc. 8: -1 187.75/50.76 Bound for (chained) transitions 2: 0 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (13) 187.75/50.76 YES 187.75/50.76 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (14) 187.75/50.76 Obligation: 187.75/50.76 SCC 187.75/50.76 ---------------------------------------- 187.75/50.76 187.75/50.76 (15) SCC2IRS (SOUND) 187.75/50.76 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.76 Generated rules. Obtained 25 rulesP rules: 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.76 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 187.75/50.77 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 187.75/50.77 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 187.75/50.77 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 187.75/50.77 Combined rules. Obtained 2 rulesP rules: 187.75/50.77 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 187.75/50.77 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 187.75/50.77 Filtered unneeded arguments: 187.75/50.77 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) 187.75/50.77 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 187.75/50.77 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 187.75/50.77 187.75/50.77 ---------------------------------------- 187.75/50.77 187.75/50.77 (16) 187.75/50.77 Obligation: 187.75/50.77 Rules: 187.75/50.77 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 187.75/50.77 187.75/50.77 ---------------------------------------- 187.75/50.77 187.75/50.77 (17) IRS2T2 (EQUIVALENT) 187.75/50.77 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 187.75/50.77 187.75/50.77 (f_2140_4,1) 187.75/50.77 187.75/50.77 ---------------------------------------- 187.75/50.77 187.75/50.77 (18) 187.75/50.77 Obligation: 187.75/50.77 START: 0; 187.75/50.77 187.75/50.77 FROM: 0; 187.75/50.77 TO: 1; 187.75/50.77 187.75/50.77 FROM: 1; 187.75/50.77 oldX0 := x0; 187.75/50.77 oldX1 := x1; 187.75/50.77 oldX2 := x2; 187.75/50.77 oldX3 := x3; 187.75/50.77 oldX4 := oldX2 - 1; 187.75/50.77 oldX5 := nondet(); 187.75/50.77 assume(oldX4 > -1 && oldX0 > 1 && oldX3 > 0 && oldX1 > 1 && oldX2 = 1 + oldX4); 187.75/50.77 x0 := 1 + oldX4; 187.75/50.77 x1 := oldX1; 187.75/50.77 x2 := oldX2 - 1; 187.75/50.77 x3 := oldX5; 187.75/50.77 TO: 1; 187.75/50.77 187.75/50.77 187.75/50.77 ---------------------------------------- 187.75/50.77 187.75/50.77 (19) T2 (EQUIVALENT) 187.75/50.77 Initially, performed program simplifications using lexicographic rank functions: 187.75/50.77 * Removed transitions 1, 3, 4 using the following rank functions: 187.75/50.77 - Rank function 1: 187.75/50.77 RF for loc. 5: 1+2*x2 187.75/50.77 RF for loc. 6: 2*x2 187.75/50.77 Bound for (chained) transitions 3: 2 187.75/50.77 Bound for (chained) transitions 4: 2 187.75/50.77 - Rank function 2: 187.75/50.77 RF for loc. 5: 0 187.75/50.77 RF for loc. 6: -1 187.75/50.77 Bound for (chained) transitions 1: 0 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (20) 187.75/50.78 YES 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (21) 187.75/50.78 Obligation: 187.75/50.78 SCC 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (22) SCC2IRS (SOUND) 187.75/50.78 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.78 Generated rules. Obtained 22 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 Combined rules. Obtained 1 rulesP rules: 187.75/50.78 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 187.75/50.78 Filtered unneeded arguments: 187.75/50.78 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) 187.75/50.78 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (23) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (24) IntTRSCompressionProof (EQUIVALENT) 187.75/50.78 Compressed rules. 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (25) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 f_2112(v44378:0:0, v44381:0:0, v44385:0:0, v44386:0:0, sum~cons_1~v48615:0:0) -> f_2112(v44378:0:0, 1 + v48615:0:0, v44385:0:0, v44386:0:0, v48615:0:0) :|: v44378:0:0 > 2 && v44385:0:0 > 2 && v44386:0:0 > 1 && v44381:0:0 > 1 && v48615:0:0 > -1 && sum~cons_1~v48615:0:0 = 1 + v48615:0:0 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (26) RankingReductionPairProof (EQUIVALENT) 187.75/50.78 Interpretation: 187.75/50.78 [ f_2112 ] = f_2112_5 187.75/50.78 187.75/50.78 The following rules are decreasing: 187.75/50.78 f_2112(v44378:0:0, v44381:0:0, v44385:0:0, v44386:0:0, sum~cons_1~v48615:0:0) -> f_2112(v44378:0:0, 1 + v48615:0:0, v44385:0:0, v44386:0:0, v48615:0:0) :|: v44378:0:0 > 2 && v44385:0:0 > 2 && v44386:0:0 > 1 && v44381:0:0 > 1 && v48615:0:0 > -1 && sum~cons_1~v48615:0:0 = 1 + v48615:0:0 187.75/50.78 187.75/50.78 The following rules are bounded: 187.75/50.78 f_2112(v44378:0:0, v44381:0:0, v44385:0:0, v44386:0:0, sum~cons_1~v48615:0:0) -> f_2112(v44378:0:0, 1 + v48615:0:0, v44385:0:0, v44386:0:0, v48615:0:0) :|: v44378:0:0 > 2 && v44385:0:0 > 2 && v44386:0:0 > 1 && v44381:0:0 > 1 && v48615:0:0 > -1 && sum~cons_1~v48615:0:0 = 1 + v48615:0:0 187.75/50.78 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (27) 187.75/50.78 YES 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (28) 187.75/50.78 Obligation: 187.75/50.78 SCC 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (29) SCC2IRS (SOUND) 187.75/50.78 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.78 Generated rules. Obtained 22 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 Combined rules. Obtained 1 rulesP rules: 187.75/50.78 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 187.75/50.78 Filtered unneeded arguments: 187.75/50.78 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) 187.75/50.78 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (30) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (31) IntTRSCompressionProof (EQUIVALENT) 187.75/50.78 Compressed rules. 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (32) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 f_1975(v37323:0:0, v37325:0:0, v37327:0:0, v37328:0:0, sum~cons_1~v42430:0:0) -> f_1975(v37323:0:0, 1 + v42430:0:0, v37327:0:0, v37328:0:0, v42430:0:0) :|: v37323:0:0 > 2 && v37327:0:0 > 2 && v37328:0:0 > 1 && v37325:0:0 > 1 && v42430:0:0 > -1 && sum~cons_1~v42430:0:0 = 1 + v42430:0:0 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (33) RankingReductionPairProof (EQUIVALENT) 187.75/50.78 Interpretation: 187.75/50.78 [ f_1975 ] = f_1975_5 187.75/50.78 187.75/50.78 The following rules are decreasing: 187.75/50.78 f_1975(v37323:0:0, v37325:0:0, v37327:0:0, v37328:0:0, sum~cons_1~v42430:0:0) -> f_1975(v37323:0:0, 1 + v42430:0:0, v37327:0:0, v37328:0:0, v42430:0:0) :|: v37323:0:0 > 2 && v37327:0:0 > 2 && v37328:0:0 > 1 && v37325:0:0 > 1 && v42430:0:0 > -1 && sum~cons_1~v42430:0:0 = 1 + v42430:0:0 187.75/50.78 187.75/50.78 The following rules are bounded: 187.75/50.78 f_1975(v37323:0:0, v37325:0:0, v37327:0:0, v37328:0:0, sum~cons_1~v42430:0:0) -> f_1975(v37323:0:0, 1 + v42430:0:0, v37327:0:0, v37328:0:0, v42430:0:0) :|: v37323:0:0 > 2 && v37327:0:0 > 2 && v37328:0:0 > 1 && v37325:0:0 > 1 && v42430:0:0 > -1 && sum~cons_1~v42430:0:0 = 1 + v42430:0:0 187.75/50.78 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (34) 187.75/50.78 YES 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (35) 187.75/50.78 Obligation: 187.75/50.78 SCC 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (36) SCC2IRS (SOUND) 187.75/50.78 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.78 Generated rules. Obtained 56 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 Combined rules. Obtained 6 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 Filtered unneeded arguments: 187.75/50.78 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) 187.75/50.78 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) 187.75/50.78 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 f_1957(v30083:0, v30092:0, v30089:0, v37024:0, v30091:0) -> f_1823(v30083:0, v30089:0) :|: v37024:0 < 0 187.75/50.78 f_1957(v30083:0, v30092:0, v30089:0, v37024:0, v30091:0) -> f_1823(v30083:0, v30089:0) :|: v37024:0 > 0 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (37) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 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 187.75/50.78 f_1823(x, x1) -> f_1957(x2, x3, x1, x4, 1 + x3) :|: x3 > 0 && x1 > 2 && x2 > 0 && x = 1 + x2 187.75/50.78 f_1957(v30083:0, v30092:0, v30089:0, v37024:0, v30091:0) -> f_1823(v30083:0, v30089:0) :|: v37024:0 < 0 187.75/50.78 f_1957(x5, x6, x7, x8, x9) -> f_1823(x5, x7) :|: x8 > 0 187.75/50.78 f_1957(x10, x11, x12, x13, x14) -> f_1957(x10, x15, x12, x16, x14) :|: x15 > 0 && x14 > 1 && x11 = 1 + x15 && x13 = 0 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (38) IRS2T2 (EQUIVALENT) 187.75/50.78 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 187.75/50.78 187.75/50.78 (f_1823_5,1) 187.75/50.78 (f_1957_5,2) 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (39) 187.75/50.78 Obligation: 187.75/50.78 START: 0; 187.75/50.78 187.75/50.78 FROM: 0; 187.75/50.78 TO: 1; 187.75/50.78 187.75/50.78 FROM: 0; 187.75/50.78 TO: 2; 187.75/50.78 187.75/50.78 FROM: 1; 187.75/50.78 oldX0 := x0; 187.75/50.78 oldX1 := x1; 187.75/50.78 oldX2 := x2; 187.75/50.78 oldX3 := x3; 187.75/50.78 oldX4 := x4; 187.75/50.78 oldX5 := oldX0 - 1; 187.75/50.78 oldX6 := nondet(); 187.75/50.78 oldX7 := nondet(); 187.75/50.78 oldX8 := nondet(); 187.75/50.78 assume(oldX5 > 0 && oldX1 > 2 && oldX0 = 1 + oldX5); 187.75/50.78 x0 := oldX0 - 1; 187.75/50.78 x1 := oldX1; 187.75/50.78 x2 := oldX6; 187.75/50.78 x3 := oldX7; 187.75/50.78 x4 := oldX8; 187.75/50.78 TO: 1; 187.75/50.78 187.75/50.78 FROM: 1; 187.75/50.78 oldX0 := x0; 187.75/50.78 oldX1 := x1; 187.75/50.78 oldX2 := x2; 187.75/50.78 oldX3 := x3; 187.75/50.78 oldX4 := x4; 187.75/50.78 oldX5 := oldX0 - 1; 187.75/50.78 oldX6 := nondet(); 187.75/50.78 oldX7 := nondet(); 187.75/50.78 assume(oldX6 > 0 && oldX1 > 2 && oldX5 > 0 && oldX0 = 1 + oldX5); 187.75/50.78 x0 := oldX0 - 1; 187.75/50.78 x1 := oldX6; 187.75/50.78 x2 := oldX1; 187.75/50.78 x3 := oldX7; 187.75/50.78 x4 := 1 + oldX6; 187.75/50.78 TO: 2; 187.75/50.78 187.75/50.78 FROM: 2; 187.75/50.78 oldX0 := x0; 187.75/50.78 oldX1 := x1; 187.75/50.78 oldX2 := x2; 187.75/50.78 oldX3 := x3; 187.75/50.78 oldX4 := x4; 187.75/50.78 oldX5 := nondet(); 187.75/50.78 oldX6 := nondet(); 187.75/50.78 oldX7 := nondet(); 187.75/50.78 assume(oldX3 < 0); 187.75/50.78 x0 := oldX0; 187.75/50.78 x1 := oldX2; 187.75/50.78 x2 := oldX5; 187.75/50.78 x3 := oldX6; 187.75/50.78 x4 := oldX7; 187.75/50.78 TO: 1; 187.75/50.78 187.75/50.78 FROM: 2; 187.75/50.78 oldX0 := x0; 187.75/50.78 oldX1 := x1; 187.75/50.78 oldX2 := x2; 187.75/50.78 oldX3 := x3; 187.75/50.78 oldX4 := x4; 187.75/50.78 oldX5 := nondet(); 187.75/50.78 oldX6 := nondet(); 187.75/50.78 oldX7 := nondet(); 187.75/50.78 assume(oldX3 > 0); 187.75/50.78 x0 := oldX0; 187.75/50.78 x1 := oldX2; 187.75/50.78 x2 := oldX5; 187.75/50.78 x3 := oldX6; 187.75/50.78 x4 := oldX7; 187.75/50.78 TO: 1; 187.75/50.78 187.75/50.78 FROM: 2; 187.75/50.78 oldX0 := x0; 187.75/50.78 oldX1 := x1; 187.75/50.78 oldX2 := x2; 187.75/50.78 oldX3 := x3; 187.75/50.78 oldX4 := x4; 187.75/50.78 oldX5 := oldX1 - 1; 187.75/50.78 oldX6 := nondet(); 187.75/50.78 assume(oldX5 > 0 && oldX4 > 1 && oldX1 = 1 + oldX5 && oldX3 = 0); 187.75/50.78 x0 := oldX0; 187.75/50.78 x1 := oldX1 - 1; 187.75/50.78 x2 := oldX2; 187.75/50.78 x3 := oldX6; 187.75/50.78 x4 := oldX4; 187.75/50.78 TO: 2; 187.75/50.78 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (40) T2 (EQUIVALENT) 187.75/50.78 Initially, performed program simplifications using lexicographic rank functions: 187.75/50.78 * Removed transitions 2, 5, 6, 14, 17, 18, 19 using the following rank functions: 187.75/50.78 - Rank function 1: 187.75/50.78 RF for loc. 6: -1+4*x0 187.75/50.78 RF for loc. 7: 4*x0 187.75/50.78 RF for loc. 8: -4+4*x0 187.75/50.78 RF for loc. 12: 4*x0 187.75/50.78 Bound for (chained) transitions 5: 4 187.75/50.78 - Rank function 2: 187.75/50.78 RF for loc. 6: -1+3*x0 187.75/50.78 RF for loc. 7: 3*x0 187.75/50.78 RF for loc. 8: -2+3*x0 187.75/50.78 RF for loc. 12: 3*x0 187.75/50.78 Bound for (chained) transitions 6: 4 187.75/50.78 - Rank function 3: 187.75/50.78 RF for loc. 6: -1 187.75/50.78 RF for loc. 7: 0 187.75/50.78 RF for loc. 8: -2 187.75/50.78 RF for loc. 12: 0 187.75/50.78 Bound for (chained) transitions 2: -1 187.75/50.78 Bound for (chained) transitions 17: 0 187.75/50.78 Bound for (chained) transitions 18: 0 187.75/50.78 - Rank function 4: 187.75/50.78 RF for loc. 7: 2*x1 187.75/50.78 RF for loc. 12: -1+2*x1 187.75/50.78 Bound for (chained) transitions 19: 3 187.75/50.78 - Rank function 5: 187.75/50.78 RF for loc. 7: 0 187.75/50.78 RF for loc. 12: -1 187.75/50.78 Bound for (chained) transitions 14: 0 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (41) 187.75/50.78 YES 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (42) 187.75/50.78 Obligation: 187.75/50.78 SCC 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (43) SCC2IRS (SOUND) 187.75/50.78 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.78 Generated rules. Obtained 25 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 Combined rules. Obtained 2 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 Filtered unneeded arguments: 187.75/50.78 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) 187.75/50.78 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (44) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 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 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (45) IntTRSCompressionProof (EQUIVALENT) 187.75/50.78 Compressed rules. 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (46) 187.75/50.78 Obligation: 187.75/50.78 Rules: 187.75/50.78 f_1482(v17202:0:0, v17208:0:0, sum~cons_1~v22104:0:0, v17211:0:0) -> f_1482(1 + v22104:0:0, v17208:0:0, v22104:0:0, v22843:0:0) :|: v17211:0:0 > 0 && v17208:0:0 > 1 && v17202:0:0 > 1 && v22104:0:0 > -1 && sum~cons_1~v22104:0:0 = 1 + v22104:0:0 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (47) RankingReductionPairProof (EQUIVALENT) 187.75/50.78 Interpretation: 187.75/50.78 [ f_1482 ] = f_1482_3 187.75/50.78 187.75/50.78 The following rules are decreasing: 187.75/50.78 f_1482(v17202:0:0, v17208:0:0, sum~cons_1~v22104:0:0, v17211:0:0) -> f_1482(1 + v22104:0:0, v17208:0:0, v22104:0:0, v22843:0:0) :|: v17211:0:0 > 0 && v17208:0:0 > 1 && v17202:0:0 > 1 && v22104:0:0 > -1 && sum~cons_1~v22104:0:0 = 1 + v22104:0:0 187.75/50.78 187.75/50.78 The following rules are bounded: 187.75/50.78 f_1482(v17202:0:0, v17208:0:0, sum~cons_1~v22104:0:0, v17211:0:0) -> f_1482(1 + v22104:0:0, v17208:0:0, v22104:0:0, v22843:0:0) :|: v17211:0:0 > 0 && v17208:0:0 > 1 && v17202:0:0 > 1 && v22104:0:0 > -1 && sum~cons_1~v22104:0:0 = 1 + v22104:0:0 187.75/50.78 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (48) 187.75/50.78 YES 187.75/50.78 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (49) 187.75/50.78 Obligation: 187.75/50.78 SCC 187.75/50.78 ---------------------------------------- 187.75/50.78 187.75/50.78 (50) SCC2IRS (SOUND) 187.75/50.78 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 187.75/50.78 Generated rules. Obtained 59 rulesP rules: 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 187.75/50.78 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 Combined rules. Obtained 12 rulesP rules: 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 Filtered unneeded arguments: 188.07/50.80 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) 188.07/50.80 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) 188.07/50.80 Removed division, modulo operations, cleaned up constraints. Obtained 10 rules.P rules: 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (51) 188.07/50.80 Obligation: 188.07/50.80 Rules: 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 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 188.07/50.80 f_1434(x38, x39, x40, x41, x42) -> f_1434(x38, x42, x40, x41, 1 + x42) :|: x39 < 0 && x42 < 0 && x41 < 0 && x42 < 1 188.07/50.80 f_1434(x43, x44, x45, x46, x47) -> f_1434(x43, x47, x45, x46, 1 + x47) :|: x44 < 0 && x47 > 0 && x46 < 0 && x47 < 1 188.07/50.80 f_1774(x48, x49, x50, x51) -> f_1434(x48, x49, x50, x49, 1 + x49) :|: x51 < 0 && x49 < 1 188.07/50.80 f_1774(x52, x53, x54, x55) -> f_1434(x52, x53, x54, x53, 1 + x53) :|: x55 > 0 && x53 < 1 188.07/50.80 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (52) IRS2T2 (EQUIVALENT) 188.07/50.80 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.80 188.07/50.80 (f_1434_5,1) 188.07/50.80 (f_1774_5,2) 188.07/50.80 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (53) 188.07/50.80 Obligation: 188.07/50.80 START: 0; 188.07/50.80 188.07/50.80 FROM: 0; 188.07/50.80 TO: 1; 188.07/50.80 188.07/50.80 FROM: 0; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 1; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 oldX6 := oldX2 - 1; 188.07/50.80 oldX5 := nondet(); 188.07/50.80 oldX7 := nondet(); 188.07/50.80 oldX8 := nondet(); 188.07/50.80 assume(oldX4 < 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 < 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX5; 188.07/50.80 x2 := oldX2 - 1; 188.07/50.80 x3 := oldX7; 188.07/50.80 x4 := oldX8; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 1; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 oldX6 := oldX2 - 1; 188.07/50.80 oldX5 := nondet(); 188.07/50.80 oldX7 := nondet(); 188.07/50.80 oldX8 := nondet(); 188.07/50.80 assume(oldX4 < 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX5; 188.07/50.80 x2 := oldX2 - 1; 188.07/50.80 x3 := oldX7; 188.07/50.80 x4 := oldX8; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 1; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 oldX6 := oldX2 - 1; 188.07/50.80 oldX5 := nondet(); 188.07/50.80 oldX7 := nondet(); 188.07/50.80 oldX8 := nondet(); 188.07/50.80 assume(oldX4 > 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 < 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX5; 188.07/50.80 x2 := oldX2 - 1; 188.07/50.80 x3 := oldX7; 188.07/50.80 x4 := oldX8; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 1; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 oldX6 := oldX2 - 1; 188.07/50.80 oldX5 := nondet(); 188.07/50.80 oldX7 := nondet(); 188.07/50.80 oldX8 := nondet(); 188.07/50.80 assume(oldX4 > 0 && oldX6 > 0 && oldX1 < 0 && oldX4 < 1 && oldX3 < 0 && oldX5 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX5; 188.07/50.80 x2 := oldX2 - 1; 188.07/50.80 x3 := oldX7; 188.07/50.80 x4 := oldX8; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 2; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 oldX6 := oldX2 - 1; 188.07/50.80 oldX5 := nondet(); 188.07/50.80 oldX7 := nondet(); 188.07/50.80 oldX8 := nondet(); 188.07/50.80 assume(oldX5 < 0 && oldX6 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6 && oldX3 = 0); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX5; 188.07/50.80 x2 := oldX2 - 1; 188.07/50.80 x3 := oldX7; 188.07/50.80 x4 := oldX8; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 2; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 oldX6 := oldX2 - 1; 188.07/50.80 oldX5 := nondet(); 188.07/50.80 oldX7 := nondet(); 188.07/50.80 oldX8 := nondet(); 188.07/50.80 assume(oldX5 > 0 && oldX6 > 0 && oldX0 > 1 && oldX5 < 1 && oldX2 = 1 + oldX6 && oldX3 = 0); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX5; 188.07/50.80 x2 := oldX2 - 1; 188.07/50.80 x3 := oldX7; 188.07/50.80 x4 := oldX8; 188.07/50.80 TO: 2; 188.07/50.80 188.07/50.80 FROM: 1; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 assume(oldX1 < 0 && oldX4 < 0 && oldX3 < 0 && oldX4 < 1); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX4; 188.07/50.80 x2 := oldX2; 188.07/50.80 x3 := oldX3; 188.07/50.80 x4 := 1 + oldX4; 188.07/50.80 TO: 1; 188.07/50.80 188.07/50.80 FROM: 1; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 assume(oldX1 < 0 && oldX4 > 0 && oldX3 < 0 && oldX4 < 1); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX4; 188.07/50.80 x2 := oldX2; 188.07/50.80 x3 := oldX3; 188.07/50.80 x4 := 1 + oldX4; 188.07/50.80 TO: 1; 188.07/50.80 188.07/50.80 FROM: 2; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 assume(oldX3 < 0 && oldX1 < 1); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX1; 188.07/50.80 x2 := oldX2; 188.07/50.80 x3 := oldX1; 188.07/50.80 x4 := 1 + oldX1; 188.07/50.80 TO: 1; 188.07/50.80 188.07/50.80 FROM: 2; 188.07/50.80 oldX0 := x0; 188.07/50.80 oldX1 := x1; 188.07/50.80 oldX2 := x2; 188.07/50.80 oldX3 := x3; 188.07/50.80 oldX4 := x4; 188.07/50.80 assume(oldX3 > 0 && oldX1 < 1); 188.07/50.80 x0 := oldX0; 188.07/50.80 x1 := oldX1; 188.07/50.80 x2 := oldX2; 188.07/50.80 x3 := oldX1; 188.07/50.80 x4 := 1 + oldX1; 188.07/50.80 TO: 1; 188.07/50.80 188.07/50.80 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (54) T2 (EQUIVALENT) 188.07/50.80 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.80 * Removed transitions 2, 5, 6, 7, 8, 9, 10, 26, 29, 30, 31, 32 using the following rank functions: 188.07/50.80 - Rank function 1: 188.07/50.80 RF for loc. 6: -4+6*x2 188.07/50.80 RF for loc. 7: 1+6*x2 188.07/50.80 RF for loc. 8: -4+6*x2 188.07/50.80 RF for loc. 12: 6*x2 188.07/50.80 Bound for (chained) transitions 5: 8 188.07/50.80 Bound for (chained) transitions 6: 8 188.07/50.80 Bound for (chained) transitions 7: 8 188.07/50.80 Bound for (chained) transitions 8: 8 188.07/50.80 Bound for (chained) transitions 29: 12 188.07/50.80 Bound for (chained) transitions 30: 12 188.07/50.80 - Rank function 2: 188.07/50.80 RF for loc. 6: 0 188.07/50.80 RF for loc. 7: 2 188.07/50.80 RF for loc. 8: 0 188.07/50.80 RF for loc. 12: 1 188.07/50.80 Bound for (chained) transitions 10: 0 188.07/50.80 Bound for (chained) transitions 26: 2 188.07/50.80 Bound for (chained) transitions 31: 1 188.07/50.80 Bound for (chained) transitions 32: 1 188.07/50.80 - Rank function 3: 188.07/50.80 RF for loc. 6: -2*x4 188.07/50.80 RF for loc. 8: -1-2*x4 188.07/50.80 Bound for (chained) transitions 9: -1 188.07/50.80 - Rank function 4: 188.07/50.80 RF for loc. 6: 1 188.07/50.80 RF for loc. 8: 0 188.07/50.80 Bound for (chained) transitions 2: 1 188.07/50.80 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (55) 188.07/50.80 YES 188.07/50.80 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (56) 188.07/50.80 Obligation: 188.07/50.80 SCC 188.07/50.80 ---------------------------------------- 188.07/50.80 188.07/50.80 (57) SCC2IRS (SOUND) 188.07/50.80 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.80 Generated rules. Obtained 22 rulesP rules: 188.07/50.80 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 188.07/50.80 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 Combined rules. Obtained 1 rulesP rules: 188.07/50.81 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 188.07/50.81 Filtered unneeded arguments: 188.07/50.81 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) 188.07/50.81 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 188.07/50.81 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 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (58) 188.07/50.81 Obligation: 188.07/50.81 Rules: 188.07/50.81 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 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (59) IRS2T2 (EQUIVALENT) 188.07/50.81 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.81 188.07/50.81 (f_1414_5,1) 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (60) 188.07/50.81 Obligation: 188.07/50.81 START: 0; 188.07/50.81 188.07/50.81 FROM: 0; 188.07/50.81 TO: 1; 188.07/50.81 188.07/50.81 FROM: 1; 188.07/50.81 oldX0 := x0; 188.07/50.81 oldX1 := x1; 188.07/50.81 oldX2 := x2; 188.07/50.81 oldX3 := x3; 188.07/50.81 oldX4 := x4; 188.07/50.81 oldX5 := oldX4 - 1; 188.07/50.81 assume(oldX5 > -1 && oldX1 > 1 && oldX3 > 1 && oldX0 > 2 && oldX2 > 2 && oldX4 = 1 + oldX5); 188.07/50.81 x0 := oldX0; 188.07/50.81 x1 := 1 + oldX5; 188.07/50.81 x2 := oldX2; 188.07/50.81 x3 := oldX3; 188.07/50.81 x4 := oldX4 - 1; 188.07/50.81 TO: 1; 188.07/50.81 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (61) T2 (EQUIVALENT) 188.07/50.81 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.81 * Removed transitions 1, 3, 4 using the following rank functions: 188.07/50.81 - Rank function 1: 188.07/50.81 RF for loc. 5: 1+2*x4 188.07/50.81 RF for loc. 6: 2*x4 188.07/50.81 Bound for (chained) transitions 3: 2 188.07/50.81 Bound for (chained) transitions 4: 2 188.07/50.81 - Rank function 2: 188.07/50.81 RF for loc. 5: 0 188.07/50.81 RF for loc. 6: -1 188.07/50.81 Bound for (chained) transitions 1: 0 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (62) 188.07/50.81 YES 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (63) 188.07/50.81 Obligation: 188.07/50.81 SCC 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (64) SCC2IRS (SOUND) 188.07/50.81 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.81 Generated rules. Obtained 22 rulesP rules: 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 Combined rules. Obtained 1 rulesP rules: 188.07/50.81 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 188.07/50.81 Filtered unneeded arguments: 188.07/50.81 f_1291(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_1291(x5, x7, x10) 188.07/50.81 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 188.07/50.81 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 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (65) 188.07/50.81 Obligation: 188.07/50.81 Rules: 188.07/50.81 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 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (66) IRS2T2 (EQUIVALENT) 188.07/50.81 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.81 188.07/50.81 (f_1291_3,1) 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (67) 188.07/50.81 Obligation: 188.07/50.81 START: 0; 188.07/50.81 188.07/50.81 FROM: 0; 188.07/50.81 TO: 1; 188.07/50.81 188.07/50.81 FROM: 1; 188.07/50.81 oldX0 := x0; 188.07/50.81 oldX1 := x1; 188.07/50.81 oldX2 := x2; 188.07/50.81 oldX3 := oldX2 - 1; 188.07/50.81 assume(oldX3 > -1 && oldX0 > 1 && oldX1 > 1 && oldX2 = 1 + oldX3); 188.07/50.81 x0 := oldX0; 188.07/50.81 x1 := 1 + oldX3; 188.07/50.81 x2 := oldX2 - 1; 188.07/50.81 TO: 1; 188.07/50.81 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (68) T2 (EQUIVALENT) 188.07/50.81 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.81 * Removed transitions 1, 3, 4 using the following rank functions: 188.07/50.81 - Rank function 1: 188.07/50.81 RF for loc. 5: 1+2*x2 188.07/50.81 RF for loc. 6: 2*x2 188.07/50.81 Bound for (chained) transitions 4: 2 188.07/50.81 - Rank function 2: 188.07/50.81 RF for loc. 5: 2*x2 188.07/50.81 RF for loc. 6: -1+2*x2 188.07/50.81 Bound for (chained) transitions 3: 1 188.07/50.81 - Rank function 3: 188.07/50.81 RF for loc. 5: 0 188.07/50.81 RF for loc. 6: -1 188.07/50.81 Bound for (chained) transitions 1: 0 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (69) 188.07/50.81 YES 188.07/50.81 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (70) 188.07/50.81 Obligation: 188.07/50.81 SCC 188.07/50.81 ---------------------------------------- 188.07/50.81 188.07/50.81 (71) SCC2IRS (SOUND) 188.07/50.81 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.81 Generated rules. Obtained 56 rulesP rules: 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 Combined rules. Obtained 6 rulesP rules: 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 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 188.07/50.81 Filtered unneeded arguments: 188.07/50.81 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) 188.07/50.81 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) 188.07/50.81 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 188.07/50.81 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 188.07/50.81 f_1266(v9687:0, v9689:0, v9695:0, v13636:0, v9694:0) -> f_1048(v9687:0, v9689:0) :|: v13636:0 < 0 188.07/50.81 f_1266(v9687:0, v9689:0, v9695:0, v13636:0, v9694:0) -> f_1048(v9687:0, v9689:0) :|: v13636:0 > 0 188.07/50.81 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 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (72) 188.07/50.83 Obligation: 188.07/50.83 Rules: 188.07/50.83 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 188.07/50.83 f_1266(x, x1, x2, x3, x4) -> f_1048(x, x1) :|: x3 < 0 188.07/50.83 f_1266(x5, x6, x7, x8, x9) -> f_1048(x5, x6) :|: x8 > 0 188.07/50.83 f_1266(x10, x11, x12, x13, x14) -> f_1266(x10, x11, x15, x16, x14) :|: x15 > 0 && x14 > 1 && x12 = 1 + x15 && x13 = 0 188.07/50.83 f_1048(x17, x18) -> f_1048(x17, x19) :|: x19 > 0 && x17 > 2 && x18 = 1 + x19 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (73) IRS2T2 (EQUIVALENT) 188.07/50.83 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.83 188.07/50.83 (f_1048_5,1) 188.07/50.83 (f_1266_5,2) 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (74) 188.07/50.83 Obligation: 188.07/50.83 START: 0; 188.07/50.83 188.07/50.83 FROM: 0; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 0; 188.07/50.83 TO: 2; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := x4; 188.07/50.83 oldX5 := oldX1 - 1; 188.07/50.83 oldX6 := nondet(); 188.07/50.83 oldX7 := nondet(); 188.07/50.83 assume(oldX6 > 0 && oldX0 > 2 && oldX5 > 0 && oldX1 = 1 + oldX5); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX1 - 1; 188.07/50.83 x2 := oldX6; 188.07/50.83 x3 := oldX7; 188.07/50.83 x4 := 1 + oldX6; 188.07/50.83 TO: 2; 188.07/50.83 188.07/50.83 FROM: 2; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := x4; 188.07/50.83 oldX5 := nondet(); 188.07/50.83 oldX6 := nondet(); 188.07/50.83 oldX7 := nondet(); 188.07/50.83 assume(oldX3 < 0); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX1; 188.07/50.83 x2 := oldX5; 188.07/50.83 x3 := oldX6; 188.07/50.83 x4 := oldX7; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 2; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := x4; 188.07/50.83 oldX5 := nondet(); 188.07/50.83 oldX6 := nondet(); 188.07/50.83 oldX7 := nondet(); 188.07/50.83 assume(oldX3 > 0); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX1; 188.07/50.83 x2 := oldX5; 188.07/50.83 x3 := oldX6; 188.07/50.83 x4 := oldX7; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 2; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := x4; 188.07/50.83 oldX5 := oldX2 - 1; 188.07/50.83 oldX6 := nondet(); 188.07/50.83 assume(oldX5 > 0 && oldX4 > 1 && oldX2 = 1 + oldX5 && oldX3 = 0); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX1; 188.07/50.83 x2 := oldX2 - 1; 188.07/50.83 x3 := oldX6; 188.07/50.83 x4 := oldX4; 188.07/50.83 TO: 2; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := x4; 188.07/50.83 oldX5 := oldX1 - 1; 188.07/50.83 oldX6 := nondet(); 188.07/50.83 oldX7 := nondet(); 188.07/50.83 oldX8 := nondet(); 188.07/50.83 assume(oldX5 > 0 && oldX0 > 2 && oldX1 = 1 + oldX5); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX1 - 1; 188.07/50.83 x2 := oldX6; 188.07/50.83 x3 := oldX7; 188.07/50.83 x4 := oldX8; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (75) T2 (EQUIVALENT) 188.07/50.83 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.83 * Removed transitions 2, 5, 6, 14, 17, 18, 19 using the following rank functions: 188.07/50.83 - Rank function 1: 188.07/50.83 RF for loc. 6: -3+5*x1 188.07/50.83 RF for loc. 7: 5*x1 188.07/50.83 RF for loc. 8: -4+5*x1 188.07/50.83 RF for loc. 12: 5*x1 188.07/50.83 Bound for (chained) transitions 5: 6 188.07/50.83 - Rank function 2: 188.07/50.83 RF for loc. 6: -1+3*x2 188.07/50.83 RF for loc. 7: 2+3*x2 188.07/50.83 RF for loc. 8: -1+3*x2 188.07/50.83 RF for loc. 12: 3*x2 188.07/50.83 Bound for (chained) transitions 19: 6 188.07/50.83 - Rank function 3: 188.07/50.83 RF for loc. 6: -1 188.07/50.83 RF for loc. 7: 1 188.07/50.83 RF for loc. 8: -1 188.07/50.83 RF for loc. 12: 0 188.07/50.83 Bound for (chained) transitions 17: 0 188.07/50.83 Bound for (chained) transitions 18: 0 188.07/50.83 - Rank function 4: 188.07/50.83 RF for loc. 6: 2*x1 188.07/50.83 RF for loc. 7: 0 188.07/50.83 RF for loc. 8: -1+2*x1 188.07/50.83 RF for loc. 12: -1 188.07/50.83 Bound for (chained) transitions 6: 3 188.07/50.83 Bound for (chained) transitions 14: 0 188.07/50.83 - Rank function 5: 188.07/50.83 RF for loc. 6: 0 188.07/50.83 RF for loc. 8: -1 188.07/50.83 Bound for (chained) transitions 2: 0 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (76) 188.07/50.83 YES 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (77) 188.07/50.83 Obligation: 188.07/50.83 SCC 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (78) SCC2IRS (SOUND) 188.07/50.83 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.83 Generated rules. Obtained 26 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Combined rules. Obtained 2 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Filtered unneeded arguments: 188.07/50.83 f_661(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_661(x5, x8, x10, x11) 188.07/50.83 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (79) 188.07/50.83 Obligation: 188.07/50.83 Rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (80) IRS2T2 (EQUIVALENT) 188.07/50.83 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.83 188.07/50.83 (f_661_4,1) 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (81) 188.07/50.83 Obligation: 188.07/50.83 START: 0; 188.07/50.83 188.07/50.83 FROM: 0; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := oldX2 - 1; 188.07/50.83 oldX5 := nondet(); 188.07/50.83 assume(oldX1 > 1 && oldX3 < 0 && oldX4 > -1 && oldX3 < 1 && oldX0 > 1 && oldX2 = 1 + oldX4); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := 1 + oldX4; 188.07/50.83 x2 := oldX2 - 1; 188.07/50.83 x3 := oldX5; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := oldX2 - 1; 188.07/50.83 oldX5 := nondet(); 188.07/50.83 assume(oldX1 > 1 && oldX3 > 0 && oldX4 > -1 && oldX3 < 1 && oldX0 > 1 && oldX2 = 1 + oldX4); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := 1 + oldX4; 188.07/50.83 x2 := oldX2 - 1; 188.07/50.83 x3 := oldX5; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (82) T2 (EQUIVALENT) 188.07/50.83 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.83 * Removed transitions 1, 4, 5 using the following rank functions: 188.07/50.83 - Rank function 1: 188.07/50.83 RF for loc. 5: 1+2*x2 188.07/50.83 RF for loc. 6: 2*x2 188.07/50.83 Bound for (chained) transitions 4: 2 188.07/50.83 Bound for (chained) transitions 5: 2 188.07/50.83 - Rank function 2: 188.07/50.83 RF for loc. 5: 0 188.07/50.83 RF for loc. 6: -1 188.07/50.83 Bound for (chained) transitions 1: 0 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (83) 188.07/50.83 YES 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (84) 188.07/50.83 Obligation: 188.07/50.83 SCC 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (85) SCC2IRS (SOUND) 188.07/50.83 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.83 Generated rules. Obtained 25 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Combined rules. Obtained 2 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Filtered unneeded arguments: 188.07/50.83 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) 188.07/50.83 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (86) 188.07/50.83 Obligation: 188.07/50.83 Rules: 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (87) IRS2T2 (EQUIVALENT) 188.07/50.83 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.83 188.07/50.83 (f_638_4,1) 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (88) 188.07/50.83 Obligation: 188.07/50.83 START: 0; 188.07/50.83 188.07/50.83 FROM: 0; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := x3; 188.07/50.83 oldX4 := oldX2 - 1; 188.07/50.83 oldX5 := nondet(); 188.07/50.83 assume(oldX4 > -1 && oldX1 > 1 && oldX3 > 0 && oldX0 > 1 && oldX2 = 1 + oldX4); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := 1 + oldX4; 188.07/50.83 x2 := oldX2 - 1; 188.07/50.83 x3 := oldX5; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (89) T2 (EQUIVALENT) 188.07/50.83 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.83 * Removed transitions 1, 3, 4 using the following rank functions: 188.07/50.83 - Rank function 1: 188.07/50.83 RF for loc. 5: 1+2*x2 188.07/50.83 RF for loc. 6: 2*x2 188.07/50.83 Bound for (chained) transitions 3: 2 188.07/50.83 Bound for (chained) transitions 4: 2 188.07/50.83 - Rank function 2: 188.07/50.83 RF for loc. 5: 1 188.07/50.83 RF for loc. 6: 0 188.07/50.83 Bound for (chained) transitions 1: 1 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (90) 188.07/50.83 YES 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (91) 188.07/50.83 Obligation: 188.07/50.83 SCC 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (92) SCC2IRS (SOUND) 188.07/50.83 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.83 Generated rules. Obtained 23 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Combined rules. Obtained 4 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Filtered unneeded arguments: 188.07/50.83 f_596(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_596(x4, x6, x10) 188.07/50.83 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (93) 188.07/50.83 Obligation: 188.07/50.83 Rules: 188.07/50.83 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 188.07/50.83 f_596(x, x1, x2) -> f_596(x, x2, 1 + x2) :|: x1 < 0 && x2 > 0 && x < 0 && x2 < 1 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (94) IRS2T2 (EQUIVALENT) 188.07/50.83 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.83 188.07/50.83 (f_596_3,1) 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (95) 188.07/50.83 Obligation: 188.07/50.83 START: 0; 188.07/50.83 188.07/50.83 FROM: 0; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 assume(oldX1 < 0 && oldX2 < 0 && oldX0 < 0 && oldX2 < 1); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX2; 188.07/50.83 x2 := 1 + oldX2; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 assume(oldX1 < 0 && oldX2 > 0 && oldX0 < 0 && oldX2 < 1); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := oldX2; 188.07/50.83 x2 := 1 + oldX2; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (96) T2 (EQUIVALENT) 188.07/50.83 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.83 * Removed transitions 1, 4, 5 using the following rank functions: 188.07/50.83 - Rank function 1: 188.07/50.83 RF for loc. 5: 1-2*x2 188.07/50.83 RF for loc. 6: -2*x2 188.07/50.83 Bound for (chained) transitions 4: 0 188.07/50.83 Bound for (chained) transitions 5: 0 188.07/50.83 - Rank function 2: 188.07/50.83 RF for loc. 5: 0 188.07/50.83 RF for loc. 6: -1 188.07/50.83 Bound for (chained) transitions 1: 0 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (97) 188.07/50.83 YES 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (98) 188.07/50.83 Obligation: 188.07/50.83 SCC 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (99) SCC2IRS (SOUND) 188.07/50.83 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 188.07/50.83 Generated rules. Obtained 22 rulesP rules: 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 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 188.07/50.83 Combined rules. Obtained 1 rulesP rules: 188.07/50.83 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 188.07/50.83 Filtered unneeded arguments: 188.07/50.83 f_584(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_584(x5, x7, x9) 188.07/50.83 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (100) 188.07/50.83 Obligation: 188.07/50.83 Rules: 188.07/50.83 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 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (101) IRS2T2 (EQUIVALENT) 188.07/50.83 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 188.07/50.83 188.07/50.83 (f_584_3,1) 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (102) 188.07/50.83 Obligation: 188.07/50.83 START: 0; 188.07/50.83 188.07/50.83 FROM: 0; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 FROM: 1; 188.07/50.83 oldX0 := x0; 188.07/50.83 oldX1 := x1; 188.07/50.83 oldX2 := x2; 188.07/50.83 oldX3 := oldX2 - 1; 188.07/50.83 assume(oldX3 > -1 && oldX0 > 1 && oldX1 > 1 && oldX2 = 1 + oldX3); 188.07/50.83 x0 := oldX0; 188.07/50.83 x1 := 1 + oldX3; 188.07/50.83 x2 := oldX2 - 1; 188.07/50.83 TO: 1; 188.07/50.83 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (103) T2 (EQUIVALENT) 188.07/50.83 Initially, performed program simplifications using lexicographic rank functions: 188.07/50.83 * Removed transitions 1, 3, 4 using the following rank functions: 188.07/50.83 - Rank function 1: 188.07/50.83 RF for loc. 5: 1+2*x2 188.07/50.83 RF for loc. 6: 2*x2 188.07/50.83 Bound for (chained) transitions 4: 2 188.07/50.83 - Rank function 2: 188.07/50.83 RF for loc. 5: 2*x2 188.07/50.83 RF for loc. 6: -1+2*x2 188.07/50.83 Bound for (chained) transitions 3: 1 188.07/50.83 - Rank function 3: 188.07/50.83 RF for loc. 5: 0 188.07/50.83 RF for loc. 6: -1 188.07/50.83 Bound for (chained) transitions 1: 0 188.07/50.83 188.07/50.83 ---------------------------------------- 188.07/50.83 188.07/50.83 (104) 188.07/50.83 YES 188.37/50.90 EOF