/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 178 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 17.4 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 97 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 795 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 66 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 833 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 54 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [EQUIVALENT, 772 ms] (27) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "cstrlcpy" linkageType: EXTERNALLY_VISIBLE returnParam: i64 parameters: (dst *i8, src *i8, siz i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %2 = alloca *i8, align 8 %3 = alloca i64, align 8 %d = alloca *i8, align 8 %s = alloca *i8, align 8 %n = alloca i64, align 8 store %dst, %1 store %src, %2 store %siz, %3 %4 = load %1 store %4, %d %5 = load %2 store %5, %s %6 = load %3 store %6, %n %7 = load %n %8 = icmp ne %7 0 br %8, %9, %25 9: br %10 10: %11 = load %n %12 = add %11 -1 store %12, %n %13 = icmp ne %12 0 br %13, %14, %24 14: %15 = load %s %16 = getelementptr %15, 1 store %16, %s %17 = load %15 %18 = load %d %19 = getelementptr %18, 1 store %19, %d store %17, %18 %20 = sext i8 %17 to i32 %21 = icmp eq %20 0 br %21, %22, %23 22: br %24 23: br %10 24: br %25 25: %26 = load %n %27 = icmp eq %26 0 br %27, %28, %41 28: %29 = load %3 %30 = icmp ne %29 0 br %30, %31, %33 31: %32 = load %d store 0, %32 br %33 33: br %34 34: %35 = load %s %36 = getelementptr %35, 1 store %36, %s %37 = load %35 %38 = icmp ne %37 0 br %38, %39, %40 39: br %34 40: br %41 41: %42 = load %s %43 = load %2 %44 = ptrtoint *i8 %42 to i64 %45 = ptrtoint *i8 %43 to i64 %46 = sub %44 %45 %47 = sub %46 1 ret %47 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %length = alloca i32, align 4 %n = alloca i32, align 4 %nondetString1 = alloca *i8, align 8 %nondetString2 = alloca *i8, align 8 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %length %3 = call i32 @__VERIFIER_nondet_int() store %3, %n %4 = load %length %5 = icmp slt %4 1 br %5, %6, %7 6: store 1, %length br %7 7: %8 = load %n %9 = icmp slt %8 1 br %9, %10, %11 10: store 1, %n br %11 11: %12 = load %n %13 = sext i32 %12 to i64 %14 = mul %13 1 %15 = alloca i8, numElementsLit: %14 store %15, %nondetString1 %16 = load %length %17 = sext i32 %16 to i64 %18 = mul %17 1 %19 = alloca i8, numElementsLit: %18 store %19, %nondetString2 %20 = load %n %21 = sub %20 1 %22 = sext i32 %21 to i64 %23 = load %nondetString1 %24 = getelementptr %23, %22 store 0, %24 %25 = load %length %26 = sub %25 1 %27 = sext i32 %26 to i64 %28 = load %nondetString2 %29 = getelementptr %28, %27 store 0, %29 %30 = load %nondetString1 %31 = load %nondetString2 %32 = load %n %33 = sext i32 %32 to i64 %34 = call i64 @cstrlcpy(*i8 %30, *i8 %31, i64 %33) ret 0 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 10 rulesP rules: f_1069(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1072(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: v4289 = 1 + v4206 && 4 <= v4289 f_1072(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1075(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: TRUE f_1075(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1078(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: TRUE f_1078(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1081(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: v4293 != 0 && v4206 < v4217 && 4 <= v4217 f_1081(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1084(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: 0 = 0 f_1084(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1087(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: TRUE f_1087(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4207, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1088(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4289, v4293, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4432, v4434, v4232, v4213, v4430, v4436, v4431, v4437, v4415, v4417, 3, 7, 2, 4, 8) :|: TRUE f_1088(v4390, v4391, v4392, v4393, v4394, v4395, v4396, v4397, v4398, 1, 0, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, v4419, v4410, v4420, v4411, v4421, v4412, v4422, v4413, v4423, v4416, v4418, v4424, v4425, v4426, v4427, v4428, v4429, v4433, v4432, v4434, v4435, v4414, v4430, v4436, v4431, v4437, v4415, v4417, 3, 7, 2, 4, 8) -> f_1091(v4390, v4391, v4392, v4393, v4394, v4395, v4396, v4397, v4398, 1, 0, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, v4419, v4410, v4420, v4411, v4421, v4412, v4422, v4413, v4423, v4416, v4418, v4424, v4425, v4426, v4427, v4428, v4429, v4433, v4432, v4434, v4435, v4414, v4430, v4436, v4431, v4437, v4415, v4417, 3, 7, 2, 4, 8) :|: TRUE f_1091(v4390, v4391, v4392, v4393, v4394, v4395, v4396, v4397, v4398, 1, 0, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, v4419, v4410, v4420, v4411, v4421, v4412, v4422, v4413, v4423, v4416, v4418, v4424, v4425, v4426, v4427, v4428, v4429, v4433, v4432, v4434, v4435, v4414, v4430, v4436, v4431, v4437, v4415, v4417, 3, 7, 2, 4, 8) -> f_1066(v4390, v4391, v4392, v4393, v4394, v4395, v4396, v4397, v4398, 1, 0, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, v4419, v4410, v4420, v4411, v4421, v4412, v4422, v4413, v4423, v4416, v4418, v4424, v4425, v4426, v4427, v4428, v4429, v4433, v4435, v4229, v4233, v4230, v4234, v4414, v4214, v4216, 3, 7, 2, 4, 8) :|: TRUE f_1066(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4205, v4206, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4213, v4214, v4216, 3, 7, 2, 4, 8) -> f_1069(v4189, v4190, v4191, v4192, v4193, v4194, v4195, v4196, v4197, 1, 0, v4200, v4201, v4202, v4203, v4204, v4206, v4207, v4208, v4218, v4209, v4219, v4210, v4220, v4211, v4221, v4212, v4222, v4215, v4217, v4223, v4224, v4225, v4226, v4227, v4228, v4231, v4232, v4229, v4233, v4230, v4234, v4205, v4213, v4214, v4216, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 2 rulesP rules: f_1069(v4189:0, v4190:0, v4191:0, v4192:0, v4193:0, v4194:0, v4195:0, v4196:0, v4197:0, 1, 0, v4200:0, v4201:0, v4202:0, v4203:0, v4204:0, v4206:0, v4207:0, v4208:0, v4218:0, v4209:0, v4219:0, v4210:0, v4220:0, v4211:0, v4221:0, v4212:0, v4222:0, v4215:0, v4217:0, v4223:0, v4224:0, v4225:0, v4226:0, v4227:0, v4228:0, v4231:0, v4232:0, v4229:0, v4233:0, v4230:0, v4234:0, v4205:0, v4213:0, v4214:0, v4216:0, 3, 7, 2, 4, 8) -> f_1069(v4189:0, v4190:0, v4191:0, v4192:0, v4193:0, v4194:0, v4195:0, v4196:0, v4197:0, 1, 0, v4200:0, v4201:0, v4202:0, v4203:0, v4204:0, 1 + v4206:0, v4293:0, v4208:0, v4218:0, v4209:0, v4219:0, v4210:0, v4220:0, v4211:0, v4221:0, v4212:0, v4222:0, v4215:0, v4217:0, v4223:0, v4224:0, v4225:0, v4226:0, v4227:0, v4228:0, v4231:0, v4232:0, v4229:1, v4233:1, v4230:1, v4234:1, v4206:0, v4213:0, v4214:1, v4216:1, 3, 7, 2, 4, 8) :|: v4206:0 > 2 && v4217:0 > v4206:0 && v4217:0 > 3 && v4293:0 < 0 f_1069(v4189:0, v4190:0, v4191:0, v4192:0, v4193:0, v4194:0, v4195:0, v4196:0, v4197:0, 1, 0, v4200:0, v4201:0, v4202:0, v4203:0, v4204:0, v4206:0, v4207:0, v4208:0, v4218:0, v4209:0, v4219:0, v4210:0, v4220:0, v4211:0, v4221:0, v4212:0, v4222:0, v4215:0, v4217:0, v4223:0, v4224:0, v4225:0, v4226:0, v4227:0, v4228:0, v4231:0, v4232:0, v4229:0, v4233:0, v4230:0, v4234:0, v4205:0, v4213:0, v4214:0, v4216:0, 3, 7, 2, 4, 8) -> f_1069(v4189:0, v4190:0, v4191:0, v4192:0, v4193:0, v4194:0, v4195:0, v4196:0, v4197:0, 1, 0, v4200:0, v4201:0, v4202:0, v4203:0, v4204:0, 1 + v4206:0, v4293:0, v4208:0, v4218:0, v4209:0, v4219:0, v4210:0, v4220:0, v4211:0, v4221:0, v4212:0, v4222:0, v4215:0, v4217:0, v4223:0, v4224:0, v4225:0, v4226:0, v4227:0, v4228:0, v4231:0, v4232:0, v4229:1, v4233:1, v4230:1, v4234:1, v4206:0, v4213:0, v4214:1, v4216:1, 3, 7, 2, 4, 8) :|: v4206:0 > 2 && v4217:0 > v4206:0 && v4217:0 > 3 && v4293:0 > 0 Filtered unneeded arguments: f_1069(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51) -> f_1069(x17, x30) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_1069(v4206:0, v4217:0) -> f_1069(1 + v4206:0, v4217:0) :|: v4217:0 > v4206:0 && v4217:0 > 3 && v4206:0 > 2 ---------------------------------------- (9) Obligation: Rules: f_1069(v4206:0, v4217:0) -> f_1069(1 + v4206:0, v4217:0) :|: v4217:0 > v4206:0 && v4217:0 > 3 && v4206:0 > 2 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1069_2,1) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX1 > oldX0 && oldX1 > 3 && oldX0 > 2); x0 := 1 + oldX0; x1 := oldX1; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1-2*x0+2*x1 RF for loc. 6: -2*x0+2*x1 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 1: 1 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 20 rulesP rules: f_1012(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) -> f_1013(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) :|: 1 + v3557 = v3525 && 0 <= v3557 f_1013(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) -> f_1014(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) :|: TRUE f_1014(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) -> f_1015(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: v3557 != 0 && 2 <= v3525 && 3 <= v3538 && 4 <= v3516 && 4 <= v3539 f_1015(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1017(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: 0 = 0 f_1017(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1019(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1019(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1021(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: 0 = 0 f_1021(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1023(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: v3659 = 1 + v3527 && 4 <= v3659 f_1023(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1025(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1025(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1027(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3529, v3530, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1027(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3529, v3530, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1029(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: 0 = 0 f_1029(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1031(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: v3671 = 1 + v3530 && 4 <= v3671 f_1031(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1033(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1033(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1035(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1035(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, v3528, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1037(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: 0 = 0 f_1037(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1040(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: v3661 != 0 && v3527 < v3541 && 4 <= v3541 f_1040(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1043(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: 0 = 0 f_1043(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1046(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1046(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1049(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) :|: TRUE f_1049(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3526, v3528, v3529, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 4, 2, 8) -> f_1011(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3557, v3527, v3659, v3661, v3530, v3671, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) :|: TRUE f_1011(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3524, v3525, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) -> f_1012(v3514, v3515, v3516, v3517, v3518, v3519, v3520, v3521, v3522, 1, v3525, v3526, v3527, v3528, v3529, v3530, 0, v3532, v3542, v3533, v3543, v3534, v3544, v3535, v3545, v3536, v3546, v3539, v3541, v3547, v3548, v3549, v3550, v3551, v3552, v3555, v3537, v3553, v3556, v3554, v3538, v3540, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 2 rulesP rules: f_1012(v3514:0, v3515:0, v3516:0, v3517:0, v3518:0, v3519:0, v3520:0, v3521:0, v3522:0, 1, 1 + v3557:0, v3526:0, v3527:0, v3528:0, v3529:0, v3530:0, 0, v3532:0, v3542:0, v3533:0, v3543:0, v3534:0, v3544:0, v3535:0, v3545:0, v3536:0, v3546:0, v3539:0, v3541:0, v3547:0, v3548:0, v3549:0, v3550:0, v3551:0, v3552:0, v3555:0, v3537:0, v3553:0, v3556:0, v3554:0, v3538:0, v3540:0, 3, 7, 2, 4, 8) -> f_1012(v3514:0, v3515:0, v3516:0, v3517:0, v3518:0, v3519:0, v3520:0, v3521:0, v3522:0, 1, v3557:0, v3527:0, 1 + v3527:0, v3661:0, v3530:0, 1 + v3530:0, 0, v3532:0, v3542:0, v3533:0, v3543:0, v3534:0, v3544:0, v3535:0, v3545:0, v3536:0, v3546:0, v3539:0, v3541:0, v3547:0, v3548:0, v3549:0, v3550:0, v3551:0, v3552:0, v3555:0, v3537:0, v3553:0, v3556:0, v3554:0, v3538:0, v3540:0, 3, 7, 2, 4, 8) :|: v3557:0 > 0 && v3538:0 > 2 && v3516:0 > 3 && v3539:0 > 3 && v3527:0 > 2 && v3530:0 > 2 && v3541:0 > v3527:0 && v3541:0 > 3 && v3661:0 < 0 f_1012(v3514:0, v3515:0, v3516:0, v3517:0, v3518:0, v3519:0, v3520:0, v3521:0, v3522:0, 1, 1 + v3557:0, v3526:0, v3527:0, v3528:0, v3529:0, v3530:0, 0, v3532:0, v3542:0, v3533:0, v3543:0, v3534:0, v3544:0, v3535:0, v3545:0, v3536:0, v3546:0, v3539:0, v3541:0, v3547:0, v3548:0, v3549:0, v3550:0, v3551:0, v3552:0, v3555:0, v3537:0, v3553:0, v3556:0, v3554:0, v3538:0, v3540:0, 3, 7, 2, 4, 8) -> f_1012(v3514:0, v3515:0, v3516:0, v3517:0, v3518:0, v3519:0, v3520:0, v3521:0, v3522:0, 1, v3557:0, v3527:0, 1 + v3527:0, v3661:0, v3530:0, 1 + v3530:0, 0, v3532:0, v3542:0, v3533:0, v3543:0, v3534:0, v3544:0, v3535:0, v3545:0, v3536:0, v3546:0, v3539:0, v3541:0, v3547:0, v3548:0, v3549:0, v3550:0, v3551:0, v3552:0, v3555:0, v3537:0, v3553:0, v3556:0, v3554:0, v3538:0, v3540:0, 3, 7, 2, 4, 8) :|: v3557:0 > 0 && v3538:0 > 2 && v3516:0 > 3 && v3539:0 > 3 && v3527:0 > 2 && v3530:0 > 2 && v3541:0 > v3527:0 && v3541:0 > 3 && v3661:0 > 0 Filtered unneeded arguments: f_1012(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47) -> f_1012(x3, x11, x13, x16, x28, x29, x41) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_1012(v3516:0, sum~cons_1~v3557:0, v3527:0, v3530:0, v3539:0, v3541:0, v3538:0) -> f_1012(v3516:0, v3557:0, 1 + v3527:0, 1 + v3530:0, v3539:0, v3541:0, v3538:0) :|: v3538:0 > 2 && v3557:0 > 0 && v3516:0 > 3 && v3539:0 > 3 && v3527:0 > 2 && v3530:0 > 2 && v3541:0 > 3 && v3541:0 > v3527:0 && sum~cons_1~v3557:0 = 1 + v3557:0 ---------------------------------------- (16) Obligation: Rules: f_1012(v3516:0, sum~cons_1~v3557:0, v3527:0, v3530:0, v3539:0, v3541:0, v3538:0) -> f_1012(v3516:0, v3557:0, 1 + v3527:0, 1 + v3530:0, v3539:0, v3541:0, v3538:0) :|: v3538:0 > 2 && v3557:0 > 0 && v3516:0 > 3 && v3539:0 > 3 && v3527:0 > 2 && v3530:0 > 2 && v3541:0 > 3 && v3541:0 > v3527:0 && sum~cons_1~v3557:0 = 1 + v3557:0 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1012_7,1) ---------------------------------------- (18) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := oldX1 - 1; assume(oldX6 > 2 && oldX7 > 0 && oldX0 > 3 && oldX4 > 3 && oldX2 > 2 && oldX3 > 2 && oldX5 > 3 && oldX5 > oldX2 && oldX1 = 1 + oldX7); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX2; x3 := 1 + oldX3; x4 := oldX4; x5 := oldX5; x6 := oldX6; TO: 1; ---------------------------------------- (19) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+x1-x2+x5 RF for loc. 6: x1-x2+x5 Bound for (chained) transitions 3: 3 - Rank function 2: RF for loc. 5: x1-x2+x5 RF for loc. 6: -1+x1-x2+x5 Bound for (chained) transitions 4: 2 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 10 rulesP rules: f_857(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_863(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: v1738 = 1 + v1662 && 4 <= v1738 f_863(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_870(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: TRUE f_870(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_876(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: TRUE f_876(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_882(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: v1864 != 0 && v1662 < v1673 && 4 <= v1673 f_882(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_889(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: 0 = 0 f_889(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_896(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: TRUE f_896(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1663, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_897(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1738, v1864, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1669, v1993, v1995, v1978, v1979, v1980, 3, 7, 2, 4, 8) :|: TRUE f_897(v1959, v1960, 1, v1962, v1963, v1964, v1965, v1966, v1967, 0, v1969, v1970, v1971, v1972, v1982, v1973, v1983, v1974, v1984, v1975, v1985, v1976, v1986, v1981, v1987, v1988, v1989, v1990, v1991, v1992, v1994, v1977, v1993, v1995, v1978, v1979, v1980, 3, 7, 2, 4, 8) -> f_905(v1959, v1960, 1, v1962, v1963, v1964, v1965, v1966, v1967, 0, v1969, v1970, v1971, v1972, v1982, v1973, v1983, v1974, v1984, v1975, v1985, v1976, v1986, v1981, v1987, v1988, v1989, v1990, v1991, v1992, v1994, v1977, v1993, v1995, v1978, v1979, v1980, 3, 7, 2, 4, 8) :|: TRUE f_905(v1959, v1960, 1, v1962, v1963, v1964, v1965, v1966, v1967, 0, v1969, v1970, v1971, v1972, v1982, v1973, v1983, v1974, v1984, v1975, v1985, v1976, v1986, v1981, v1987, v1988, v1989, v1990, v1991, v1992, v1994, v1977, v1993, v1995, v1978, v1979, v1980, 3, 7, 2, 4, 8) -> f_851(v1959, v1960, 1, v1962, v1963, v1964, v1965, v1966, v1967, 0, v1969, v1970, v1971, v1972, v1982, v1973, v1983, v1974, v1984, v1975, v1985, v1976, v1986, v1981, v1987, v1988, v1989, v1990, v1991, v1992, v1994, v1685, v1687, v1977, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: TRUE f_851(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1661, v1662, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) -> f_857(v1651, v1652, 1, v1654, v1655, v1656, v1657, v1658, v1659, 0, v1662, v1663, v1664, v1674, v1665, v1675, v1666, v1676, v1667, v1677, v1668, v1678, v1673, v1679, v1680, v1681, v1682, v1683, v1684, v1686, v1661, v1685, v1687, v1669, v1670, v1671, v1672, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 2 rulesP rules: f_857(v1651:0, v1652:0, 1, v1654:0, v1655:0, v1656:0, v1657:0, v1658:0, v1659:0, 0, v1662:0, v1663:0, v1664:0, v1674:0, v1665:0, v1675:0, v1666:0, v1676:0, v1667:0, v1677:0, v1668:0, v1678:0, v1673:0, v1679:0, v1680:0, v1681:0, v1682:0, v1683:0, v1684:0, v1686:0, v1661:0, v1685:0, v1687:0, v1669:0, v1670:0, v1671:0, v1672:0, 3, 7, 2, 4, 8) -> f_857(v1651:0, v1652:0, 1, v1654:0, v1655:0, v1656:0, v1657:0, v1658:0, v1659:0, 0, 1 + v1662:0, v1864:0, v1664:0, v1674:0, v1665:0, v1675:0, v1666:0, v1676:0, v1667:0, v1677:0, v1668:0, v1678:0, v1673:0, v1679:0, v1680:0, v1681:0, v1682:0, v1683:0, v1684:0, v1686:0, v1662:0, v1685:1, v1687:1, v1669:0, v1670:1, v1671:1, v1672:1, 3, 7, 2, 4, 8) :|: v1662:0 > 2 && v1673:0 > v1662:0 && v1673:0 > 3 && v1864:0 < 0 f_857(v1651:0, v1652:0, 1, v1654:0, v1655:0, v1656:0, v1657:0, v1658:0, v1659:0, 0, v1662:0, v1663:0, v1664:0, v1674:0, v1665:0, v1675:0, v1666:0, v1676:0, v1667:0, v1677:0, v1668:0, v1678:0, v1673:0, v1679:0, v1680:0, v1681:0, v1682:0, v1683:0, v1684:0, v1686:0, v1661:0, v1685:0, v1687:0, v1669:0, v1670:0, v1671:0, v1672:0, 3, 7, 2, 4, 8) -> f_857(v1651:0, v1652:0, 1, v1654:0, v1655:0, v1656:0, v1657:0, v1658:0, v1659:0, 0, 1 + v1662:0, v1864:0, v1664:0, v1674:0, v1665:0, v1675:0, v1666:0, v1676:0, v1667:0, v1677:0, v1668:0, v1678:0, v1673:0, v1679:0, v1680:0, v1681:0, v1682:0, v1683:0, v1684:0, v1686:0, v1662:0, v1685:1, v1687:1, v1669:0, v1670:1, v1671:1, v1672:1, 3, 7, 2, 4, 8) :|: v1662:0 > 2 && v1673:0 > v1662:0 && v1673:0 > 3 && v1864:0 > 0 Filtered unneeded arguments: f_857(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42) -> f_857(x11, x23) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_857(v1662:0, v1673:0) -> f_857(1 + v1662:0, v1673:0) :|: v1673:0 > v1662:0 && v1673:0 > 3 && v1662:0 > 2 ---------------------------------------- (23) Obligation: Rules: f_857(v1662:0, v1673:0) -> f_857(1 + v1662:0, v1673:0) :|: v1673:0 > v1662:0 && v1673:0 > 3 && v1662:0 > 2 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_857_2,1) ---------------------------------------- (25) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX1 > oldX0 && oldX1 > 3 && oldX0 > 2); x0 := 1 + oldX0; x1 := oldX1; TO: 1; ---------------------------------------- (26) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1-2*x0+2*x1 RF for loc. 6: -2*x0+2*x1 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 1: 1 ---------------------------------------- (27) YES