/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 181 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 2845 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] (6) AND (7) LLVM Symbolic Execution Lasso (8) Lasso2IRS [SOUND, 58 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 864 ms] (13) YES (14) LLVM Symbolic Execution Lasso (15) Lasso2IRS [SOUND, 105 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 804 ms] (20) YES (21) LLVM Symbolic Execution Lasso (22) Lasso2IRS [SOUND, 91 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [COMPLETE, 1072 ms] (27) NO (28) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (29) AND (30) LLVM Symbolic Execution SCC (31) SCC2IRS [SOUND, 90 ms] (32) IntTRS (33) IRS2T2 [EQUIVALENT, 0 ms] (34) T2IntSys (35) T2 [EQUIVALENT, 1153 ms] (36) YES (37) LLVM Symbolic Execution SCC (38) SCC2IRS [SOUND, 52 ms] (39) IntTRS (40) IntTRSPeriodicNontermProof [COMPLETE, 7 ms] (41) NO (42) SCC2IRS [SOUND, 6 ms] (43) IntTRS (44) IntTRSCompressionProof [EQUIVALENT, 0 ms] (45) IntTRS (46) IntTRSPeriodicNontermProof [COMPLETE, 18 ms] (47) NO (48) SEGraph to IRS [SOUND, 188 ms] (49) IntTRS (50) IRS2T2 [EQUIVALENT, 0 ms] (51) T2IntSys (52) T2 [COMPLETE, 1456 ms] (53) NO ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "rec1" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (i i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 store %i, %2 %3 = load %2 %4 = icmp sle %3 0 br %4, %5, %6 5: store 0, %1 br %14 6: %7 = load %2 %8 = sub %7 2 %9 = call i32 @rec1(i32 %8) %10 = sub %9 1 %11 = call i32 @rec1(i32 %10) %12 = call i32 @rec1(i32 %11) %13 = add %12 1 store %13, %1 br %14 14: %15 = load %1 ret %15 *BasicFunctionTypename: "rec2" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (j i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 store %j, %2 %3 = load %2 %4 = icmp sle %3 0 br %4, %5, %6 5: store 0, %1 br %12 6: %7 = load %2 %8 = add %7 1 %9 = call i32 @rec1(i32 %8) %10 = call i32 @rec2(i32 %9) %11 = sub %10 1 store %11, %1 br %12 12: %13 = load %1 ret %13 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %x = alloca i32, align 4 store 0, %1 %2 = call i32 (...)* @__VERIFIER_nondet_int() store %2, %x %3 = load %x %4 = call i32 @rec2(i32 %3) %5 = load %1 ret %5 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToLassoProof (COMPLETE) Converted SEGraph to 3 dependent lassos. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: Lasso ---------------------------------------- (8) Lasso2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 57 rulesP rules: f_302(v513, v514, v515, 3, 0, 1, 4) -> f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 1 <= v516 && v517 = 3 + v516 && 4 <= v517 f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: TRUE f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 0 = 0 f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_307(v513, v514, v516, v515, v517, 3, 1, 4) :|: 0 < v513 f_307(v513, v514, v516, v515, v517, 3, 1, 4) -> f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: TRUE f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 2 + v519 = v513 && 0 <= 1 + v519 f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) :|: 0 = 0 f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) -> f_299(v519, 0, 1) :|: TRUE f_299(v513, 0, 1) -> f_302(v513, v514, v515, 3, 0, 1, 4) :|: 1 <= v514 && v515 = 3 + v514 && 4 <= v515 f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) -> f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) :|: 0 = 0 f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) :|: TRUE f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(-1, 0, 1) :|: TRUE f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) -> f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) :|: 0 = 0 f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(0, 0, 1) :|: TRUE f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: TRUE f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_140 -> f_141(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_141(v1, v2, 3, 1, 4) -> f_142(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_142(v1, v3, v2, v4, 3, 1, 4) -> f_143(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_143(v1, v3, v2, v4, 0, 3, 1, 4) -> f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: 0 = 0 f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: TRUE f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_267(v5, v1, v2, v3, v4, 0, v5, 3, 1, 4) :|: TRUE f_267(v406, v407, v408, v409, v410, 0, v412, 3, 1, 4) -> f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) :|: 1 <= v413 && v414 = 3 + v413 && 4 <= v414 f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) -> f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 1 <= v426 && v427 = 3 + v426 && 4 <= v427 f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: TRUE f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 = 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 < v406 f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: TRUE f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) :|: v502 = 1 + v406 && 2 <= v502 f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) -> f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: 0 = 0 f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_296(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: TRUE f_296(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_299(v502, 0, 1) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(v519:0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_419(0, v514:0, v515:0, v516:0, 3 + v516:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v516:0 > 0 && v519:0 > -2 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_302(0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(-1, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_140 -> f_302(1 + v5:0, v514:0, 3 + v514:0, 3, 0, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v413:0 > 0 && v426:0 > 0 && v5:0 > 0 && v514:0 > 0 Filtered unneeded arguments: f_302(x1, x2, x3, x4, x5, x6, x7) -> f_302(x1) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_302(sum~cons_2~v519:0) -> f_302(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(sum~cons_2~v519:0) -> f_419(0, v514:0, v515:0, v516:0, 3 + v516:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v516:0 > 0 && v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_302(0) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_302(sum~cons_2~v519:0) -> f_302(0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(sum~cons_2~v519:0) -> f_302(-1) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_140 -> f_302(1 + v5:0) :|: v5:0 > 0 ---------------------------------------- (9) Obligation: Rules: f_302(sum~cons_2~v519:0) -> f_302(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(x) -> f_419(0, x1, x2, x3, 3 + x3, 2 + x4, x4, 1, 3, 2, 4) :|: x3 > 0 && x4 > -2 && x = 2 + x4 f_419(x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_302(0) :|: TRUE && x5 = 0 && x12 = 1 && x13 = 3 && x14 = 2 && x15 = 4 f_302(x16) -> f_302(0) :|: x17 > -2 && x16 = 2 + x17 f_302(x18) -> f_302(-1) :|: x19 > -2 && x18 = 2 + x19 f_140 -> f_302(1 + v5:0) :|: v5:0 > 0 Start term: f_140 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_302_11,1) (f_419_11,2) (f_140_11,3) ---------------------------------------- (11) Obligation: START: 3; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := oldX0 - 2; oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); assume(oldX11 > -2 && oldX0 = 2 + oldX11); x0 := oldX0 - 2; x1 := oldX12; x2 := oldX13; x3 := oldX14; x4 := oldX15; x5 := oldX16; x6 := oldX17; x7 := oldX18; x8 := oldX19; x9 := oldX20; x10 := oldX21; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX14 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); assume(oldX13 > 0 && oldX14 > -2 && oldX0 = 2 + oldX14); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := 3 + oldX13; x5 := 2 + oldX14; x6 := oldX0 - 2; x7 := 1; x8 := 3; x9 := 2; x10 := 4; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX21 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(oldX21 > -2 && oldX0 = 2 + oldX21); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX21 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(oldX21 > -2 && oldX0 = 2 + oldX21); x0 := -1; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); assume(oldX11 > 0); x0 := 1 + oldX11; x1 := oldX12; x2 := oldX13; x3 := oldX14; x4 := oldX15; x5 := oldX16; x6 := oldX17; x7 := oldX18; x8 := oldX19; x9 := oldX20; x10 := oldX21; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 4, 5, 6, 7 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x0 RF for loc. 6: 2*x0 Bound for (chained) transitions 4: 2 Bound for (chained) transitions 5: 2 Bound for (chained) transitions 6: 2 Bound for (chained) transitions 7: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Lasso ---------------------------------------- (15) Lasso2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 57 rulesP rules: f_302(v513, v514, v515, 3, 0, 1, 4) -> f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 1 <= v516 && v517 = 3 + v516 && 4 <= v517 f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: TRUE f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 0 = 0 f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_307(v513, v514, v516, v515, v517, 3, 1, 4) :|: 0 < v513 f_307(v513, v514, v516, v515, v517, 3, 1, 4) -> f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: TRUE f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 2 + v519 = v513 && 0 <= 1 + v519 f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) :|: 0 = 0 f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) -> f_299(v519, 0, 1) :|: TRUE f_299(v513, 0, 1) -> f_302(v513, v514, v515, 3, 0, 1, 4) :|: 1 <= v514 && v515 = 3 + v514 && 4 <= v515 f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) -> f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) :|: 0 = 0 f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) :|: TRUE f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(-1, 0, 1) :|: TRUE f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) -> f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) :|: 0 = 0 f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(0, 0, 1) :|: TRUE f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: TRUE f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_140 -> f_141(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_141(v1, v2, 3, 1, 4) -> f_142(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_142(v1, v3, v2, v4, 3, 1, 4) -> f_143(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_143(v1, v3, v2, v4, 0, 3, 1, 4) -> f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: 0 = 0 f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: TRUE f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_267(v5, v1, v2, v3, v4, 0, v5, 3, 1, 4) :|: TRUE f_267(v406, v407, v408, v409, v410, 0, v412, 3, 1, 4) -> f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) :|: 1 <= v413 && v414 = 3 + v413 && 4 <= v414 f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) -> f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 1 <= v426 && v427 = 3 + v426 && 4 <= v427 f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: TRUE f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 = 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 < v406 f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: TRUE f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) :|: v502 = 1 + v406 && 2 <= v502 f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) -> f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: 0 = 0 f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_296(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: TRUE f_296(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_299(v502, 0, 1) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(v519:0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_419(0, v514:0, v515:0, v516:0, 3 + v516:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v516:0 > 0 && v519:0 > -2 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_302(0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(-1, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_140 -> f_302(1 + v5:0, v514:0, 3 + v514:0, 3, 0, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v413:0 > 0 && v426:0 > 0 && v5:0 > 0 && v514:0 > 0 Filtered unneeded arguments: f_302(x1, x2, x3, x4, x5, x6, x7) -> f_302(x1) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_302(sum~cons_2~v519:0) -> f_302(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(sum~cons_2~v519:0) -> f_419(0, v514:0, v515:0, v516:0, 3 + v516:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v516:0 > 0 && v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_302(0) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_302(sum~cons_2~v519:0) -> f_302(0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(sum~cons_2~v519:0) -> f_302(-1) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_140 -> f_302(1 + v5:0) :|: v5:0 > 0 ---------------------------------------- (16) Obligation: Rules: f_302(sum~cons_2~v519:0) -> f_302(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(x) -> f_419(0, x1, x2, x3, 3 + x3, 2 + x4, x4, 1, 3, 2, 4) :|: x3 > 0 && x4 > -2 && x = 2 + x4 f_419(x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_302(0) :|: TRUE && x5 = 0 && x12 = 1 && x13 = 3 && x14 = 2 && x15 = 4 f_302(x16) -> f_302(0) :|: x17 > -2 && x16 = 2 + x17 f_302(x18) -> f_302(-1) :|: x19 > -2 && x18 = 2 + x19 f_140 -> f_302(1 + v5:0) :|: v5:0 > 0 Start term: f_140 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_302_11,1) (f_419_11,2) (f_140_11,3) ---------------------------------------- (18) Obligation: START: 3; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := oldX0 - 2; oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); assume(oldX11 > -2 && oldX0 = 2 + oldX11); x0 := oldX0 - 2; x1 := oldX12; x2 := oldX13; x3 := oldX14; x4 := oldX15; x5 := oldX16; x6 := oldX17; x7 := oldX18; x8 := oldX19; x9 := oldX20; x10 := oldX21; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX14 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); assume(oldX13 > 0 && oldX14 > -2 && oldX0 = 2 + oldX14); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := 3 + oldX13; x5 := 2 + oldX14; x6 := oldX0 - 2; x7 := 1; x8 := 3; x9 := 2; x10 := 4; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX21 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(oldX21 > -2 && oldX0 = 2 + oldX21); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX21 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(oldX21 > -2 && oldX0 = 2 + oldX21); x0 := -1; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); assume(oldX11 > 0); x0 := 1 + oldX11; x1 := oldX12; x2 := oldX13; x3 := oldX14; x4 := oldX15; x5 := oldX16; x6 := oldX17; x7 := oldX18; x8 := oldX19; x9 := oldX20; x10 := oldX21; TO: 1; ---------------------------------------- (19) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 4, 5, 6, 7 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x0 RF for loc. 6: 2*x0 Bound for (chained) transitions 4: 2 Bound for (chained) transitions 5: 2 Bound for (chained) transitions 6: 2 Bound for (chained) transitions 7: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: Lasso ---------------------------------------- (22) Lasso2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 26 rulesP rules: f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) -> f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 1 <= v426 && v427 = 3 + v426 && 4 <= v427 f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: TRUE f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 = 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 < v406 f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: TRUE f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) :|: v502 = 1 + v406 && 2 <= v502 f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) -> f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: 0 = 0 f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) :|: 0 = 0 f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) -> f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) :|: 0 = 0 f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) -> f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) :|: TRUE f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) -> f_267(1, v407, v408, v409, v410, 0, v412, 3, 1, 4) :|: TRUE f_267(v406, v407, v408, v409, v410, 0, v412, 3, 1, 4) -> f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) :|: 1 <= v413 && v414 = 3 + v413 && 4 <= v414 f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_140 -> f_141(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_141(v1, v2, 3, 1, 4) -> f_142(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_142(v1, v3, v2, v4, 3, 1, 4) -> f_143(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_143(v1, v3, v2, v4, 0, 3, 1, 4) -> f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: 0 = 0 f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: TRUE f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_267(v5, v1, v2, v3, v4, 0, v5, 3, 1, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_140 -> f_269(v5:0, v413:0, v1:0, 3 + v1:0, v3:0, 3 + v3:0, 3 + v413:0, 0, v5:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v413:0 > 0 f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0, 0, v412:0, 3, 1, 4) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1, 0, v412:0, 3, 1, 4) :|: v426:0 > 0 && v406:0 > 0 && v413:1 > 0 Filtered unneeded arguments: f_269(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) -> f_269(x1) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_140 -> f_269(v5:0) :|: TRUE f_269(v406:0) -> f_269(1) :|: v406:0 > 0 ---------------------------------------- (23) Obligation: Rules: f_140 -> f_269(v5:0) :|: TRUE f_269(v406:0) -> f_269(1) :|: v406:0 > 0 Start term: f_140 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_140_1,1) (f_269_1,2) ---------------------------------------- (25) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(0 = 0); x0 := oldX1; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 0); x0 := 1; TO: 2; ---------------------------------------- (26) T2 (COMPLETE) Found this recurrent set for cutpoint 5: oldX1 == 1 and x0 == 1 ---------------------------------------- (27) NO ---------------------------------------- (28) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 2 SCCs. ---------------------------------------- (29) Complex Obligation (AND) ---------------------------------------- (30) Obligation: SCC ---------------------------------------- (31) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 36 rulesP rules: f_302(v513, v514, v515, 3, 0, 1, 4) -> f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 1 <= v516 && v517 = 3 + v516 && 4 <= v517 f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: TRUE f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 0 = 0 f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_307(v513, v514, v516, v515, v517, 3, 1, 4) :|: 0 < v513 f_307(v513, v514, v516, v515, v517, 3, 1, 4) -> f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: TRUE f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 2 + v519 = v513 && 0 <= 1 + v519 f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) :|: 0 = 0 f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) -> f_299(v519, 0, 1) :|: TRUE f_299(v513, 0, 1) -> f_302(v513, v514, v515, 3, 0, 1, 4) :|: 1 <= v514 && v515 = 3 + v514 && 4 <= v515 f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) -> f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) :|: 0 = 0 f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) :|: TRUE f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(-1, 0, 1) :|: TRUE f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) -> f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) :|: 0 = 0 f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(0, 0, 1) :|: TRUE f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: TRUE f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE Combined rules. Obtained 5 rulesP rules: f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(v519:0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_419(0, v514:0, v515:0, v516:0, 3 + v516:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v516:0 > 0 && v519:0 > -2 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_302(0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(0, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 f_302(2 + v519:0, v514:0, v515:0, 3, 0, 1, 4) -> f_302(-1, v514:1, 3 + v514:1, 3, 0, 1, 4) :|: v516:0 > 0 && v519:0 > -2 && v514:1 > 0 Filtered unneeded arguments: f_302(x1, x2, x3, x4, x5, x6, x7) -> f_302(x1) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_302(sum~cons_2~v519:0) -> f_302(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(sum~cons_2~v519:0) -> f_419(0, v514:0, v515:0, v516:0, 3 + v516:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v516:0 > 0 && v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_302(0) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_302(sum~cons_2~v519:0) -> f_302(0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(sum~cons_2~v519:0) -> f_302(-1) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 ---------------------------------------- (32) Obligation: Rules: f_302(sum~cons_2~v519:0) -> f_302(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_302(x) -> f_419(0, x1, x2, x3, 3 + x3, 2 + x4, x4, 1, 3, 2, 4) :|: x3 > 0 && x4 > -2 && x = 2 + x4 f_419(x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_302(0) :|: TRUE && x5 = 0 && x12 = 1 && x13 = 3 && x14 = 2 && x15 = 4 f_302(x16) -> f_302(0) :|: x17 > -2 && x16 = 2 + x17 f_302(x18) -> f_302(-1) :|: x19 > -2 && x18 = 2 + x19 ---------------------------------------- (33) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_302_11,1) (f_419_11,2) ---------------------------------------- (34) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := oldX0 - 2; oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); assume(oldX11 > -2 && oldX0 = 2 + oldX11); x0 := oldX0 - 2; x1 := oldX12; x2 := oldX13; x3 := oldX14; x4 := oldX15; x5 := oldX16; x6 := oldX17; x7 := oldX18; x8 := oldX19; x9 := oldX20; x10 := oldX21; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX14 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); assume(oldX13 > 0 && oldX14 > -2 && oldX0 = 2 + oldX14); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := 3 + oldX13; x5 := 2 + oldX14; x6 := oldX0 - 2; x7 := 1; x8 := 3; x9 := 2; x10 := 4; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX21 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(oldX21 > -2 && oldX0 = 2 + oldX21); x0 := 0; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX21 := oldX0 - 2; oldX11 := nondet(); oldX12 := nondet(); oldX13 := nondet(); oldX14 := nondet(); oldX15 := nondet(); oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); assume(oldX21 > -2 && oldX0 = 2 + oldX21); x0 := -1; x1 := oldX11; x2 := oldX12; x3 := oldX13; x4 := oldX14; x5 := oldX15; x6 := oldX16; x7 := oldX17; x8 := oldX18; x9 := oldX19; x10 := oldX20; TO: 1; ---------------------------------------- (35) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 7, 8, 20, 22, 23 using the following rank functions: - Rank function 1: RF for loc. 6: 6*x0 RF for loc. 8: -1+6*x0 RF for loc. 12: x10 Bound for (chained) transitions 5: 5 Bound for (chained) transitions 6, 20: 5 Bound for (chained) transitions 7: 5 Bound for (chained) transitions 8: 5 Bound for (chained) transitions 22: 4 Bound for (chained) transitions 23: 4 - Rank function 2: RF for loc. 6: 0 RF for loc. 8: -1 Bound for (chained) transitions 2: 0 ---------------------------------------- (36) YES ---------------------------------------- (37) Obligation: SCC ---------------------------------------- (38) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 17 rulesP rules: f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) -> f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 1 <= v426 && v427 = 3 + v426 && 4 <= v427 f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: TRUE f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 = 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 < v406 f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: TRUE f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) :|: v502 = 1 + v406 && 2 <= v502 f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) -> f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: 0 = 0 f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) :|: 0 = 0 f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) -> f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) :|: 0 = 0 f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) -> f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) :|: TRUE f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) -> f_267(1, v407, v408, v409, v410, 0, v412, 3, 1, 4) :|: TRUE f_267(v406, v407, v408, v409, v410, 0, v412, 3, 1, 4) -> f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) :|: 1 <= v413 && v414 = 3 + v413 && 4 <= v414 f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0, 0, v412:0, 3, 1, 4) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1, 0, v412:0, 3, 1, 4) :|: v426:0 > 0 && v406:0 > 0 && v413:1 > 0 Filtered unneeded arguments: f_269(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) -> f_269(x1) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_269(v406:0) -> f_269(1) :|: v406:0 > 0 ---------------------------------------- (39) Obligation: Rules: f_269(v406:0) -> f_269(1) :|: v406:0 > 0 ---------------------------------------- (40) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc, v406:0) -> f(1, 1) :|: pc = 1 && v406:0 > 0 Witness term starting non-terminating reduction: f(1, 1) ---------------------------------------- (41) NO ---------------------------------------- (42) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 17 rulesP rules: f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) -> f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 1 <= v426 && v427 = 3 + v426 && 4 <= v427 f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: TRUE f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 = 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 < v406 f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: TRUE f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) :|: v502 = 1 + v406 && 2 <= v502 f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) -> f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: 0 = 0 f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) :|: 0 = 0 f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) -> f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) :|: 0 = 0 f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) -> f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) :|: TRUE f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) -> f_267(1, v407, v408, v409, v410, 0, v412, 3, 1, 4) :|: 1 <= v407 && 4 <= v408 && 1 <= v409 && 4 <= v410 && v407 <= v408 && v409 <= v410 f_267(v406, v407, v408, v409, v410, 0, v412, 3, 1, 4) -> f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) :|: 1 <= v413 && v414 = 3 + v413 && 4 <= v414 f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: 1 <= v406 && 1 <= v407 && 4 <= v408 && 1 <= v409 && 4 <= v410 && 1 <= v413 && 4 <= v414 && 1 <= v426 && 4 <= v427 && 2 <= v502 && v407 <= v408 && v409 <= v410 && v413 <= v414 && v426 <= v427 Combined rules. Obtained 2 rulesP rules: f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0, 0, v412:0, 3, 1, 4) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1, 0, v412:0, 3, 1, 4) :|: v407:0 > 0 && v406:0 > 0 && v408:0 > 3 && v409:0 > 0 && v410:0 > 3 && v426:0 > 0 && v413:0 > 0 && v414:0 > 3 && v408:0 >= v407:0 && v410:0 >= v409:0 && v414:0 >= v413:0 && v426:0 <= 3 + v426:0 && v413:1 > 0 f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0, 0, v412:0, 3, 1, 4) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1, 0, v412:0, 3, 1, 4) :|: v426:0 > 0 && v406:0 > 0 && v408:0 > 3 && v407:0 > 0 && v409:0 > 0 && v410:0 > 3 && v408:0 >= v407:0 && v413:1 > 0 && v410:0 >= v409:0 Filtered unneeded arguments: f_269(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) -> f_269(x1, x2, x3, x4, x5, x6, x7) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1) :|: v406:0 > 0 && v407:0 > 0 && v408:0 > 3 && v409:0 > 0 && v410:0 > 3 && v413:0 > 0 && v414:0 > 3 && v408:0 >= v407:0 && v410:0 >= v409:0 && v413:1 > 0 && v414:0 >= v413:0 f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1) :|: v408:0 > 3 && v406:0 > 0 && v407:0 > 0 && v409:0 > 0 && v410:0 > 3 && v408:0 >= v407:0 && v410:0 >= v409:0 && v413:1 > 0 ---------------------------------------- (43) Obligation: Rules: f_269(v406:0, v413:0, v407:0, v408:0, v409:0, v410:0, v414:0) -> f_269(1, v413:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1) :|: v406:0 > 0 && v407:0 > 0 && v408:0 > 3 && v409:0 > 0 && v410:0 > 3 && v413:0 > 0 && v414:0 > 3 && v408:0 >= v407:0 && v410:0 >= v409:0 && v413:1 > 0 && v414:0 >= v413:0 f_269(x, x1, x2, x3, x4, x5, x6) -> f_269(1, x7, x2, x3, x4, x5, 3 + x7) :|: x3 > 3 && x > 0 && x2 > 0 && x4 > 0 && x5 > 3 && x3 >= x2 && x5 >= x4 && x7 > 0 ---------------------------------------- (44) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (45) Obligation: Rules: f_269(v406:0:0, v413:0:0, v407:0:0, v408:0:0, v409:0:0, v410:0:0, v414:0:0) -> f_269(1, v413:1:0, v407:0:0, v408:0:0, v409:0:0, v410:0:0, 3 + v413:1:0) :|: v413:1:0 > 0 && v414:0:0 >= v413:0:0 && v410:0:0 >= v409:0:0 && v408:0:0 >= v407:0:0 && v414:0:0 > 3 && v413:0:0 > 0 && v410:0:0 > 3 && v409:0:0 > 0 && v408:0:0 > 3 && v407:0:0 > 0 && v406:0:0 > 0 f_269(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f_269(1, x7:0, x2:0, x3:0, x4:0, x5:0, 3 + x7:0) :|: x5:0 >= x4:0 && x7:0 > 0 && x3:0 >= x2:0 && x5:0 > 3 && x4:0 > 0 && x2:0 > 0 && x:0 > 0 && x3:0 > 3 ---------------------------------------- (46) IntTRSPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc, v406:0:0, v413:0:0, v407:0:0, v408:0:0, v409:0:0, v410:0:0, v414:0:0) -> f(1, 1, v413:1:0, v407:0:0, v408:0:0, v409:0:0, v410:0:0, 3 + v413:1:0) :|: pc = 1 && (v413:1:0 > 0 && v414:0:0 >= v413:0:0 && v410:0:0 >= v409:0:0 && v408:0:0 >= v407:0:0 && v414:0:0 > 3 && v413:0:0 > 0 && v410:0:0 > 3 && v409:0:0 > 0 && v408:0:0 > 3 && v407:0:0 > 0 && v406:0:0 > 0) f(pc, x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f(1, 1, x7:0, x2:0, x3:0, x4:0, x5:0, 3 + x7:0) :|: pc = 1 && (x5:0 >= x4:0 && x7:0 > 0 && x3:0 >= x2:0 && x5:0 > 3 && x4:0 > 0 && x2:0 > 0 && x:0 > 0 && x3:0 > 3) Witness term starting non-terminating reduction: f(1, 1, 4, 4, 4, 4, 6, 7) ---------------------------------------- (47) NO ---------------------------------------- (48) SEGraph to IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 112 rulesP rules: f_140 -> f_141(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_141(v1, v2, 3, 1, 4) -> f_142(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_142(v1, v3, v2, v4, 3, 1, 4) -> f_143(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_143(v1, v3, v2, v4, 0, 3, 1, 4) -> f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_144(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_145(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 f_146(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: 0 = 0 f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) :|: TRUE f_147(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_295(v5, 0, v1, v2, v3, v4, 3, 1, 4) :|: TRUE f_148(v5, v1, v2, v3, v4, 0, 3, 1, 4) -> f_267(v5, v1, v2, v3, v4, 0, v5, 3, 1, 4) :|: TRUE f_198(v58, v59, v60, v61, v62, v63, v64, v65, v66, 0, v68, 3, 1, 4) -> f_299(v58, 0, 1) :|: TRUE f_267(v406, v407, v408, v409, v410, 0, v412, 3, 1, 4) -> f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) :|: 1 <= v413 && v414 = 3 + v413 && 4 <= v414 f_269(v406, v413, v407, v408, v409, v410, v414, 0, v412, 3, 1, 4) -> f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 1 <= v426 && v427 = 3 + v426 && 4 <= v427 f_270(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: TRUE f_273(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 = 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_277(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: v406 <= 0 f_275(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) :|: 0 < v406 f_277(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_280(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) :|: 0 = 0 f_278(v406, v413, v426, v407, v408, v409, v410, v414, v427, 0, v412, 3, 1, 4) -> f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_280(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) -> f_282(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) :|: TRUE f_281(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: TRUE f_282(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) -> f_286(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) :|: TRUE f_283(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) :|: 0 = 0 f_286(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) -> f_289(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) :|: TRUE f_287(v406, v413, v426, 0, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4) -> f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) :|: v502 = 1 + v406 && 2 <= v502 f_289(v406, v413, v426, 1, v407, v408, v409, v410, v414, v427, 0, v412, 3, 4) -> f_292(v406, v413, v426, 1, 0, v407, v408, v409, v410, v414, v427, v412, 3, 4) :|: 0 = 0 f_290(v406, v413, v426, 0, v502, v407, v408, v409, v410, v414, v427, v412, 3, 1, 4, 2) -> f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: 0 = 0 f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_296(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) :|: TRUE f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_318(v513, v514, v516, 1, 0, v515, v517, 3, 4) :|: TRUE f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_293(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_295(v5, 0, v1, v2, v3, v4, 3, 1, 4) -> f_298(v1, v3, v5, 0, v2, v4, 3, 1, 4) :|: 0 = 0 f_296(v502, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 1, 4, 2) -> f_299(v502, 0, 1) :|: TRUE f_298(v1, v3, v5, 0, v2, v4, 3, 1, 4) -> f_301(v1, v3, v5, 0, v2, v4, 3, 1, 4) :|: 0 = 0 f_299(v513, 0, 1) -> f_302(v513, v514, v515, 3, 0, 1, 4) :|: 1 <= v514 && v515 = 3 + v514 && 4 <= v515 f_302(v513, v514, v515, 3, 0, 1, 4) -> f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 1 <= v516 && v517 = 3 + v516 && 4 <= v517 f_303(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: TRUE f_304(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: 0 = 0 f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_306(v513, v514, v516, v515, v517, 3, 0, 1, 4) :|: v513 <= 0 f_305(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_307(v513, v514, v516, v515, v517, 3, 1, 4) :|: 0 < v513 f_306(v513, v514, v516, v515, v517, 3, 0, 1, 4) -> f_308(v513, v514, v516, 1, v515, v517, 3, 0, 4) :|: 0 = 0 f_307(v513, v514, v516, v515, v517, 3, 1, 4) -> f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_308(v513, v514, v516, 1, v515, v517, 3, 0, 4) -> f_310(v513, v514, v516, 1, v515, v517, 3, 0, 4) :|: TRUE f_309(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: TRUE f_310(v513, v514, v516, 1, v515, v517, 3, 0, 4) -> f_312(v513, v514, v516, 1, v515, v517, 0, 3, 4) :|: TRUE f_311(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) :|: 0 = 0 f_312(v513, v514, v516, 1, v515, v517, 0, 3, 4) -> f_314(v513, v514, v516, 1, v515, v517, 0, 3, 4) :|: TRUE f_313(v513, v514, v516, 0, v515, v517, 3, 1, 4) -> f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 2 + v519 = v513 && 0 <= 1 + v519 f_314(v513, v514, v516, 1, v515, v517, 0, 3, 4) -> f_316(v513, v514, v516, 1, 0, v515, v517, 3, 4) :|: 0 = 0 f_315(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) :|: 0 = 0 f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_317(v519, v514, v515, v516, v517, v513, 0, 3, 2, 1, 4) -> f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE f_319(v519, v514, v515, v516, v517, v513, 3, 2, 1, 4, 0) -> f_299(v519, 0, 1) :|: TRUE f_320(v519, 0, v514, v515, v516, v517, v513, 3, 2, 1, 4) -> f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_321(v513, v514, v516, 0, v519, v515, v517, 3, 2, 1, 4) -> f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_322(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) :|: 0 = 0 f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_337(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_362(v608, v609, v610, 0, v612, v613, v614, 1, v616, v617, 3, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_387(v695, v696, v697, 0, v699, v700, v701, 1, v703, v704, 3, 2, 6, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_412(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_323(-1, v514, v515, v516, v517, v513, 0, v519, 3, 2, 1, 4) -> f_436(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_324(-1, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(-1, 0, 1) :|: TRUE f_325(-1, 0, v514, v515, v516, v517, v513, v519, 3, 2, 1, 4) -> f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_326(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) :|: 0 = 0 f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) :|: TRUE f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_329(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) :|: TRUE f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_338(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) :|: TRUE f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_363(v608, v609, v610, 0, v612, v613, v614, 1, v616, v617, 3, 2, 4) :|: TRUE f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_388(v695, v696, v697, 0, v699, v700, v701, 1, v703, v704, 3, 2, 6, 4) :|: TRUE f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_413(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_327(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_437(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_328(0, v514, v515, v516, v517, v513, 3, 1, 2, 4) -> f_299(0, 0, 1) :|: TRUE f_329(0, v514, v515, v516, v517, v513, v519, -1, 3, 2, 1, 4) -> f_330(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) :|: 0 = 0 f_330(v513, v514, v516, 0, v519, -1, v515, v517, 3, 2, 1, 4) -> f_331(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_331(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) -> f_332(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) :|: TRUE f_332(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) -> f_333(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) :|: TRUE f_333(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) -> f_334(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_334(v513, v514, v516, 0, v519, -1, 1, v515, v517, 3, 2, 4) -> f_359(v513, v514, v516, 0, v519, 0, -1, 1, v515, v517, 3, 2, 4) :|: TRUE f_359(v608, v609, v610, 0, v612, v613, v614, 1, v616, v617, 3, 2, 4) -> f_384(v608, v609, v610, 0, v612, v613, v614, 1, v616, v617, 3, 2, 6, 4) :|: TRUE f_384(v695, v696, v697, 0, v699, v700, v701, 1, v703, v704, 3, 2, 6, 4) -> f_409(v695, v696, v697, 0, v699, v700, v701, 1, v703, v704, 3, 2, 4) :|: TRUE f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) :|: 0 = 0 f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_414(v406, v413, v426, 0, v502, 1, v407, v408, v409, v410, v414, v427, v412, 3, 4, 2) -> f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) :|: 0 = 0 f_415(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) -> f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) :|: TRUE f_416(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, v502, 3, 4, 2) -> f_421(v406, v413, v426, 1, 0, v407, v408, v409, v410, v414, v427, v412, 3, 4) :|: TRUE f_417(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_418(1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4) -> f_267(1, v407, v408, v409, v410, 0, v412, 3, 1, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_423(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_419(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_438(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_420(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_422(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_424(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: 0 = 0 f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) :|: TRUE f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_427(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) :|: TRUE f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_428(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_425(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_439(v782, v783, v784, 0, v786, v787, v788, 1, v790, v791, 3, 2, 4) :|: TRUE f_426(0, v514, v515, v516, v517, v513, 3, 1, 4) -> f_299(0, 0, 1) :|: TRUE f_427(0, v514, v515, v516, v517, v513, v519, 1, 3, 2, 4) -> f_429(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_429(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_430(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_430(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_431(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: TRUE f_431(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_432(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: TRUE f_432(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_433(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) :|: 0 = 0 f_433(v513, v514, v516, 0, v519, 1, v515, v517, 3, 2, 4) -> f_409(v513, v514, v516, 0, v519, 1, 0, 1, v515, v517, 3, 2, 4) :|: TRUE f_434(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) -> f_410(v502, 1, v407, v408, v409, v410, v413, v414, v426, v427, 0, v412, v406, 3, 4, 2) :|: TRUE f_435(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) -> f_411(v519, 1, v514, v515, v516, v517, v513, 0, 3, 2, 4) :|: TRUE Combined rules. Obtained 31 rulesP rules: f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_305(0, v514:1, v516:1, 3 + v514:1, 3 + v516:1, 3, 0, 1, 4) :|: v519:0 > -2 && v514:1 > 0 && v516:1 > 0 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_413(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_423(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_419(0, v514:0, v515:0, v516:0, v517:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v519:0 > -2 f_305(v513:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_316(v513:0, v514:0, v516:0, 1, 0, v515:0, v517:0, 3, 4) :|: v513:0 < 1 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_388(v695:0, v696:0, v697:0, 0, v699:0, v700:0, v701:0, 1, v703:0, v704:0, 3, 2, 6, 4) :|: v519:0 > -2 f_275(v406:0, v413:0, v426:0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, 0, v412:0, 3, 1, 4) -> f_292(v406:0, v413:0, v426:0, 1, 0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, v412:0, 3, 4) :|: v406:0 < 1 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_437(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_409(v513:0, v514:0, v516:0, 0, v519:0, 1, 0, 1, v515:0, v517:0, 3, 2, 4) :|: TRUE f_140 -> f_301(v1:0, v3:0, v5:0, 0, 3 + v1:0, 3 + v3:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 f_275(v406:0, v413:0, v426:0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, 0, v412:0, 3, 1, 4) -> f_416(1, v407:0, v408:0, v409:0, v410:0, v413:0, v414:0, v426:0, v427:0, 0, v412:0, v406:0, 1 + v406:0, 3, 4, 2) :|: v406:0 > 0 f_198(v58:0, v59:0, v60:0, v61:0, v62:0, v63:0, v64:0, v65:0, v66:0, 0, v68:0, 3, 1, 4) -> f_305(v58:0, v514:0, v516:0, 3 + v514:0, 3 + v516:0, 3, 0, 1, 4) :|: v514:0 > 0 && v516:0 > 0 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_428(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_338(2 + v519:0, v514:0, v516:0, 0, v519:0, -1, 1, v515:0, v517:0, 3, 2, 4) :|: v519:0 > -2 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_305(0, v514:1, v516:1, 3 + v514:1, 3 + v516:1, 3, 0, 1, 4) :|: v514:1 > 0 && v516:1 > 0 f_416(1, v407:0, v408:0, v409:0, v410:0, v413:0, v414:0, v426:0, v427:0, 0, v412:0, v406:0, v502:0, 3, 4, 2) -> f_421(v406:0, v413:0, v426:0, 1, 0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, v412:0, 3, 4) :|: TRUE f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_387(v695:0, v696:0, v697:0, 0, v699:0, v700:0, v701:0, 1, v703:0, v704:0, 3, 2, 6, 4) :|: v519:0 > -2 f_416(1, v407:0, v408:0, v409:0, v410:0, v413:0, v414:0, v426:0, v427:0, 0, v412:0, v406:0, v502:0, 3, 4, 2) -> f_275(1, v413:1, v426:1, v407:0, v408:0, v409:0, v410:0, 3 + v413:1, 3 + v426:1, 0, v412:0, 3, 1, 4) :|: v413:1 > 0 && v426:1 > 0 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_362(v608:0, v609:0, v610:0, 0, v612:0, v613:0, v614:0, 1, v616:0, v617:0, 3, 2, 4) :|: v519:0 > -2 f_275(v406:0, v413:0, v426:0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, 0, v412:0, 3, 1, 4) -> f_305(1 + v406:0, v514:0, v516:0, 3 + v514:0, 3 + v516:0, 3, 0, 1, 4) :|: v406:0 > 0 && v514:0 > 0 && v516:0 > 0 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_439(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_305(v519:0, v514:1, v516:1, 3 + v514:1, 3 + v516:1, 3, 0, 1, 4) :|: v514:1 > 0 && v519:0 > -2 && v516:1 > 0 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_305(-1, v514:1, v516:1, 3 + v514:1, 3 + v516:1, 3, 0, 1, 4) :|: v519:0 > -2 && v514:1 > 0 && v516:1 > 0 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_337(2 + v519:0, v514:0, v516:0, 0, v519:0, -1, 1, v515:0, v517:0, 3, 2, 4) :|: v519:0 > -2 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_412(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_409(2 + v519:0, v514:0, v516:0, 0, v519:0, 0, -1, 1, v515:0, v517:0, 3, 2, 4) :|: v519:0 > -2 f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_436(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 f_275(v406:0, v413:0, v426:0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, 0, v412:0, 3, 1, 4) -> f_318(v513:0, v514:0, v516:0, 1, 0, v515:0, v517:0, 3, 4) :|: v406:0 > 0 f_140 -> f_275(v5:0, v413:0, v426:0, v1:0, 3 + v1:0, v3:0, 3 + v3:0, 3 + v413:0, 3 + v426:0, 0, v5:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v413:0 > 0 && v426:0 > 0 f_419(0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, 1, 3, 2, 4) -> f_438(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE f_305(2 + v519:0, v514:0, v516:0, v515:0, v517:0, 3, 0, 1, 4) -> f_363(v608:0, v609:0, v610:0, 0, v612:0, v613:0, v614:0, 1, v616:0, v617:0, 3, 2, 4) :|: v519:0 > -2 Filtered unneeded arguments: f_305(x1, x2, x3, x4, x5, x6, x7, x8, x9) -> f_305(x1) f_275(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_275(x1) f_198(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_198(x1) Removed division, modulo operations, cleaned up constraints. Obtained 31 rules.P rules: f_305(sum~cons_2~v519:0) -> f_305(0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(sum~cons_2~v519:0) -> f_413(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_423(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_305(sum~cons_2~v519:0) -> f_419(0, v514:0, v515:0, v516:0, v517:0, 2 + v519:0, v519:0, 1, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(v513:0) -> f_316(v513:0, v514:0, v516:0, 1, 0, v515:0, v517:0, 3, 4) :|: v513:0 < 1 f_305(sum~cons_2~v519:0) -> f_388(v695:0, v696:0, v697:0, 0, v699:0, v700:0, v701:0, 1, v703:0, v704:0, 3, 2, 6, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_275(v406:0) -> f_292(v406:0, v413:0, v426:0, 1, 0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, v412:0, 3, 4) :|: v406:0 < 1 f_305(sum~cons_2~v519:0) -> f_437(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_409(v513:0, v514:0, v516:0, 0, v519:0, 1, 0, 1, v515:0, v517:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_140 -> f_301(v1:0, v3:0, v5:0, 0, 3 + v1:0, 3 + v3:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 f_275(v406:0) -> f_416(1, v407:0, v408:0, v409:0, v410:0, v413:0, v414:0, v426:0, v427:0, 0, v412:0, v406:0, 1 + v406:0, 3, 4, 2) :|: v406:0 > 0 f_198(v58:0) -> f_305(v58:0) :|: TRUE f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_428(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_305(sum~cons_2~v519:0) -> f_338(2 + v519:0, v514:0, v516:0, 0, v519:0, -1, 1, v515:0, v517:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_305(0) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_416(cons_1, v407:0, v408:0, v409:0, v410:0, v413:0, v414:0, v426:0, v427:0, cons_0, v412:0, v406:0, v502:0, cons_3, cons_4, cons_2) -> f_421(v406:0, v413:0, v426:0, 1, 0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, v412:0, 3, 4) :|: TRUE && cons_1 = 1 && cons_0 = 0 && cons_3 = 3 && cons_4 = 4 && cons_2 = 2 f_305(sum~cons_2~v519:0) -> f_387(v695:0, v696:0, v697:0, 0, v699:0, v700:0, v701:0, 1, v703:0, v704:0, 3, 2, 6, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_416(cons_1, v407:0, v408:0, v409:0, v410:0, v413:0, v414:0, v426:0, v427:0, cons_0, v412:0, v406:0, v502:0, cons_3, cons_4, cons_2) -> f_275(1) :|: TRUE && cons_1 = 1 && cons_0 = 0 && cons_3 = 3 && cons_4 = 4 && cons_2 = 2 f_305(sum~cons_2~v519:0) -> f_362(v608:0, v609:0, v610:0, 0, v612:0, v613:0, v614:0, 1, v616:0, v617:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_275(v406:0) -> f_305(1 + v406:0) :|: v406:0 > 0 f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_439(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_305(sum~cons_2~v519:0) -> f_305(v519:0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(sum~cons_2~v519:0) -> f_305(-1) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(sum~cons_2~v519:0) -> f_337(2 + v519:0, v514:0, v516:0, 0, v519:0, -1, 1, v515:0, v517:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(sum~cons_2~v519:0) -> f_412(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(sum~cons_2~v519:0) -> f_409(2 + v519:0, v514:0, v516:0, 0, v519:0, 0, -1, 1, v515:0, v517:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(sum~cons_2~v519:0) -> f_436(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_275(v406:0) -> f_318(v513:0, v514:0, v516:0, 1, 0, v515:0, v517:0, 3, 4) :|: v406:0 > 0 f_140 -> f_275(v5:0) :|: TRUE f_419(cons_0, v514:0, v515:0, v516:0, v517:0, v513:0, v519:0, cons_1, cons_3, cons_2, cons_4) -> f_438(v782:0, v783:0, v784:0, 0, v786:0, v787:0, v788:0, 1, v790:0, v791:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 && cons_3 = 3 && cons_2 = 2 && cons_4 = 4 f_305(sum~cons_2~v519:0) -> f_363(v608:0, v609:0, v610:0, 0, v612:0, v613:0, v614:0, 1, v616:0, v617:0, 3, 2, 4) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 ---------------------------------------- (49) Obligation: Rules: f_305(sum~cons_2~v519:0) -> f_305(0) :|: v519:0 > -2 && sum~cons_2~v519:0 = 2 + v519:0 f_305(x) -> f_413(x1, x2, x3, 0, x4, x5, x6, 1, x7, x8, 3, 2, 4) :|: x9 > -2 && x = 2 + x9 f_419(x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) -> f_423(x21, x22, x23, 0, x24, x25, x26, 1, x27, x28, 3, 2, 4) :|: TRUE && x10 = 0 && x17 = 1 && x18 = 3 && x19 = 2 && x20 = 4 f_305(x29) -> f_419(0, x30, x31, x32, x33, 2 + x34, x34, 1, 3, 2, 4) :|: x34 > -2 && x29 = 2 + x34 f_305(v513:0) -> f_316(v513:0, v514:0, v516:0, 1, 0, v515:0, v517:0, 3, 4) :|: v513:0 < 1 f_305(x35) -> f_388(x36, x37, x38, 0, x39, x40, x41, 1, x42, x43, 3, 2, 6, 4) :|: x44 > -2 && x35 = 2 + x44 f_275(v406:0) -> f_292(v406:0, v413:0, v426:0, 1, 0, v407:0, v408:0, v409:0, v410:0, v414:0, v427:0, v412:0, 3, 4) :|: v406:0 < 1 f_305(x45) -> f_437(x46, x47, x48, 0, x49, x50, x51, 1, x52, x53, 3, 2, 4) :|: x54 > -2 && x45 = 2 + x54 f_419(x55, x56, x57, x58, x59, x60, x61, x62, x63, x64, x65) -> f_409(x60, x56, x58, 0, x61, 1, 0, 1, x57, x59, 3, 2, 4) :|: TRUE && x55 = 0 && x62 = 1 && x63 = 3 && x64 = 2 && x65 = 4 f_140 -> f_301(v1:0, v3:0, v5:0, 0, 3 + v1:0, 3 + v3:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 f_275(x66) -> f_416(1, x67, x68, x69, x70, x71, x72, x73, x74, 0, x75, x66, 1 + x66, 3, 4, 2) :|: x66 > 0 f_198(v58:0) -> f_305(v58:0) :|: TRUE f_419(x76, x77, x78, x79, x80, x81, x82, x83, x84, x85, x86) -> f_428(x87, x88, x89, 0, x90, x91, x92, 1, x93, x94, 3, 2, 4) :|: TRUE && x76 = 0 && x83 = 1 && x84 = 3 && x85 = 2 && x86 = 4 f_305(x95) -> f_338(2 + x96, x97, x98, 0, x96, -1, 1, x99, x100, 3, 2, 4) :|: x96 > -2 && x95 = 2 + x96 f_419(x101, x102, x103, x104, x105, x106, x107, x108, x109, x110, x111) -> f_305(0) :|: TRUE && x101 = 0 && x108 = 1 && x109 = 3 && x110 = 2 && x111 = 4 f_416(x112, x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123, x124, x125, x126, x127) -> f_421(x123, x117, x119, 1, 0, x113, x114, x115, x116, x118, x120, x122, 3, 4) :|: TRUE && x112 = 1 && x121 = 0 && x125 = 3 && x126 = 4 && x127 = 2 f_305(x128) -> f_387(x129, x130, x131, 0, x132, x133, x134, 1, x135, x136, 3, 2, 6, 4) :|: x137 > -2 && x128 = 2 + x137 f_416(x138, x139, x140, x141, x142, x143, x144, x145, x146, x147, x148, x149, x150, x151, x152, x153) -> f_275(1) :|: TRUE && x138 = 1 && x147 = 0 && x151 = 3 && x152 = 4 && x153 = 2 f_305(x154) -> f_362(x155, x156, x157, 0, x158, x159, x160, 1, x161, x162, 3, 2, 4) :|: x163 > -2 && x154 = 2 + x163 f_275(x164) -> f_305(1 + x164) :|: x164 > 0 f_419(x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175) -> f_439(x176, x177, x178, 0, x179, x180, x181, 1, x182, x183, 3, 2, 4) :|: TRUE && x165 = 0 && x172 = 1 && x173 = 3 && x174 = 2 && x175 = 4 f_305(x184) -> f_305(x185) :|: x185 > -2 && x184 = 2 + x185 f_305(x186) -> f_305(-1) :|: x187 > -2 && x186 = 2 + x187 f_305(x188) -> f_337(2 + x189, x190, x191, 0, x189, -1, 1, x192, x193, 3, 2, 4) :|: x189 > -2 && x188 = 2 + x189 f_305(x194) -> f_412(x195, x196, x197, 0, x198, x199, x200, 1, x201, x202, 3, 2, 4) :|: x203 > -2 && x194 = 2 + x203 f_305(x204) -> f_409(2 + x205, x206, x207, 0, x205, 0, -1, 1, x208, x209, 3, 2, 4) :|: x205 > -2 && x204 = 2 + x205 f_305(x210) -> f_436(x211, x212, x213, 0, x214, x215, x216, 1, x217, x218, 3, 2, 4) :|: x219 > -2 && x210 = 2 + x219 f_275(x220) -> f_318(x221, x222, x223, 1, 0, x224, x225, 3, 4) :|: x220 > 0 f_140 -> f_275(x226) :|: TRUE f_419(x227, x228, x229, x230, x231, x232, x233, x234, x235, x236, x237) -> f_438(x238, x239, x240, 0, x241, x242, x243, 1, x244, x245, 3, 2, 4) :|: TRUE && x227 = 0 && x234 = 1 && x235 = 3 && x236 = 2 && x237 = 4 f_305(x246) -> f_363(x247, x248, x249, 0, x250, x251, x252, 1, x253, x254, 3, 2, 4) :|: x255 > -2 && x246 = 2 + x255 Start term: f_140 ---------------------------------------- (50) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_305_16,1) (f_413_16,2) (f_419_16,3) (f_423_16,4) (f_316_16,5) (f_388_16,6) (f_275_16,7) (f_292_16,8) (f_437_16,9) (f_409_16,10) (f_140_16,11) (f_301_16,12) (f_416_16,13) (f_198_16,14) (f_428_16,15) (f_338_16,16) (f_421_16,17) (f_387_16,18) (f_362_16,19) (f_439_16,20) (f_337_16,21) (f_412_16,22) (f_436_16,23) (f_318_16,24) (f_438_16,25) (f_363_16,26) ---------------------------------------- (51) Obligation: START: 11; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX31 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); assume(oldX31 > -2 && oldX0 = 2 + oldX31); x0 := 0; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := oldX24; x10 := oldX25; x11 := oldX26; x12 := oldX27; x13 := oldX28; x14 := oldX29; x15 := oldX30; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX27 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX27 > -2 && oldX0 = 2 + oldX27); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 2; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 4; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX20 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); assume(oldX20 > -2 && oldX0 = 2 + oldX20); x0 := 0; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := 2 + oldX20; x6 := oldX0 - 2; x7 := 1; x8 := 3; x9 := 2; x10 := 4; x11 := oldX21; x12 := oldX22; x13 := oldX23; x14 := oldX24; x15 := oldX25; TO: 3; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX0 < 1); x0 := oldX0; x1 := oldX16; x2 := oldX17; x3 := 1; x4 := 0; x5 := oldX18; x6 := oldX19; x7 := 3; x8 := 4; x9 := oldX20; x10 := oldX21; x11 := oldX22; x12 := oldX23; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 5; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX26 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); assume(oldX26 > -2 && oldX0 = 2 + oldX26); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 6; x13 := 4; x14 := oldX24; x15 := oldX25; TO: 6; FROM: 7; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX0 < 1); x0 := oldX0; x1 := oldX16; x2 := oldX17; x3 := 1; x4 := 0; x5 := oldX18; x6 := oldX19; x7 := oldX20; x8 := oldX21; x9 := oldX22; x10 := oldX23; x11 := oldX24; x12 := 3; x13 := 4; x14 := oldX25; x15 := oldX26; TO: 8; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX27 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX27 > -2 && oldX0 = 2 + oldX27); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 9; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := oldX5; x1 := oldX1; x2 := oldX3; x3 := 0; x4 := oldX6; x5 := 1; x6 := 0; x7 := 1; x8 := oldX2; x9 := oldX4; x10 := 3; x11 := 2; x12 := 4; x13 := oldX16; x14 := oldX17; x15 := oldX18; TO: 10; FROM: 11; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); assume(oldX17 > 0 && oldX16 > 0); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := 3 + oldX16; x5 := 3 + oldX17; x6 := 3; x7 := 1; x8 := 4; x9 := oldX19; x10 := oldX20; x11 := oldX21; x12 := oldX22; x13 := oldX23; x14 := oldX24; x15 := oldX25; TO: 12; FROM: 7; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); assume(oldX0 > 0); x0 := 1; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := 0; x10 := oldX24; x11 := oldX0; x12 := 1 + oldX0; x13 := 3; x14 := 4; x15 := 2; TO: 13; FROM: 14; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); assume(0 = 0); x0 := oldX0; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := oldX24; x10 := oldX25; x11 := oldX26; x12 := oldX27; x13 := oldX28; x14 := oldX29; x15 := oldX30; TO: 1; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 15; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := oldX0 - 2; oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); assume(oldX16 > -2 && oldX0 = 2 + oldX16); x0 := 2 + oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX0 - 2; x5 := -1; x6 := 1; x7 := oldX19; x8 := oldX20; x9 := 3; x10 := 2; x11 := 4; x12 := oldX21; x13 := oldX22; x14 := oldX23; x15 := oldX24; TO: 16; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := 0; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := oldX24; x10 := oldX25; x11 := oldX26; x12 := oldX27; x13 := oldX28; x14 := oldX29; x15 := oldX30; TO: 1; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); assume(0 = 0 && oldX0 = 1 && oldX9 = 0 && oldX13 = 3 && oldX14 = 4 && oldX15 = 2); x0 := oldX11; x1 := oldX5; x2 := oldX7; x3 := 1; x4 := 0; x5 := oldX1; x6 := oldX2; x7 := oldX3; x8 := oldX4; x9 := oldX6; x10 := oldX8; x11 := oldX10; x12 := 3; x13 := 4; x14 := oldX16; x15 := oldX17; TO: 17; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX26 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); assume(oldX26 > -2 && oldX0 = 2 + oldX26); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 6; x13 := 4; x14 := oldX24; x15 := oldX25; TO: 18; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); assume(0 = 0 && oldX0 = 1 && oldX9 = 0 && oldX13 = 3 && oldX14 = 4 && oldX15 = 2); x0 := 1; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := oldX24; x10 := oldX25; x11 := oldX26; x12 := oldX27; x13 := oldX28; x14 := oldX29; x15 := oldX30; TO: 7; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX27 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX27 > -2 && oldX0 = 2 + oldX27); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 19; FROM: 7; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); assume(oldX0 > 0); x0 := 1 + oldX0; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := oldX24; x10 := oldX25; x11 := oldX26; x12 := oldX27; x13 := oldX28; x14 := oldX29; x15 := oldX30; TO: 1; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 20; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := oldX0 - 2; oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); assume(oldX16 > -2 && oldX0 = 2 + oldX16); x0 := oldX0 - 2; x1 := oldX17; x2 := oldX18; x3 := oldX19; x4 := oldX20; x5 := oldX21; x6 := oldX22; x7 := oldX23; x8 := oldX24; x9 := oldX25; x10 := oldX26; x11 := oldX27; x12 := oldX28; x13 := oldX29; x14 := oldX30; x15 := oldX31; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX31 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); assume(oldX31 > -2 && oldX0 = 2 + oldX31); x0 := -1; x1 := oldX16; x2 := oldX17; x3 := oldX18; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := oldX22; x8 := oldX23; x9 := oldX24; x10 := oldX25; x11 := oldX26; x12 := oldX27; x13 := oldX28; x14 := oldX29; x15 := oldX30; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := oldX0 - 2; oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); assume(oldX16 > -2 && oldX0 = 2 + oldX16); x0 := 2 + oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX0 - 2; x5 := -1; x6 := 1; x7 := oldX19; x8 := oldX20; x9 := 3; x10 := 2; x11 := 4; x12 := oldX21; x13 := oldX22; x14 := oldX23; x15 := oldX24; TO: 21; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX27 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX27 > -2 && oldX0 = 2 + oldX27); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 22; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := oldX0 - 2; oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); assume(oldX16 > -2 && oldX0 = 2 + oldX16); x0 := 2 + oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX0 - 2; x5 := 0; x6 := -1; x7 := 1; x8 := oldX19; x9 := oldX20; x10 := 3; x11 := 2; x12 := 4; x13 := oldX21; x14 := oldX22; x15 := oldX23; TO: 10; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX27 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX27 > -2 && oldX0 = 2 + oldX27); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 23; FROM: 7; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); assume(oldX0 > 0); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 1; x4 := 0; x5 := oldX19; x6 := oldX20; x7 := 3; x8 := 4; x9 := oldX21; x10 := oldX22; x11 := oldX23; x12 := oldX24; x13 := oldX25; x14 := oldX26; x15 := oldX27; TO: 24; FROM: 11; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); assume(0 = 0); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := oldX19; x4 := oldX20; x5 := oldX21; x6 := oldX22; x7 := oldX23; x8 := oldX24; x9 := oldX25; x10 := oldX26; x11 := oldX27; x12 := oldX28; x13 := oldX29; x14 := oldX30; x15 := oldX31; TO: 7; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(0 = 0 && oldX0 = 0 && oldX7 = 1 && oldX8 = 3 && oldX9 = 2 && oldX10 = 4); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 25; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := x8; oldX9 := x9; oldX10 := x10; oldX11 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX27 := oldX0 - 2; oldX16 := nondet(); oldX17 := nondet(); oldX18 := nondet(); oldX19 := nondet(); oldX20 := nondet(); oldX21 := nondet(); oldX22 := nondet(); oldX23 := nondet(); oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); assume(oldX27 > -2 && oldX0 = 2 + oldX27); x0 := oldX16; x1 := oldX17; x2 := oldX18; x3 := 0; x4 := oldX19; x5 := oldX20; x6 := oldX21; x7 := 1; x8 := oldX22; x9 := oldX23; x10 := 3; x11 := 2; x12 := 4; x13 := oldX24; x14 := oldX25; x15 := oldX26; TO: 26; ---------------------------------------- (52) T2 (COMPLETE) Found this recurrent set for cutpoint 31: oldX0 == 1 and oldX16 == 1 and x0 == 1 and x11 == 1 and x12 == 2 and x13 == 3 and x14 == 4 and x15 == 2 and x9 == 0 ---------------------------------------- (53) NO