/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 171 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 3334 ms] (4) LLVM Symbolic Execution Graph (5) SEGraph to IRS [SOUND, 153 ms] (6) IntTRS (7) IRS2T2 [EQUIVALENT, 0 ms] (8) T2IntSys (9) T2 [EQUIVALENT, 1366 ms] (10) 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: "twoWay" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (terminate i32, n i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 %m = alloca i32, align 4 store %terminate, %2 store %n, %3 %4 = load %3 %5 = icmp slt %4 0 br %5, %6, %7 6: store 1, %1 br %23 7: %8 = load %3 store %8, %m %9 = load %2 %10 = icmp ne %9 0 br %10, %11, %14 11: %12 = load %m %13 = add %12 -1 store %13, %m br %17 14: %15 = load %m %16 = add %15 1 store %16, %m br %17 17: %18 = load %m %19 = load %2 %20 = load %m %21 = call i32 @twoWay(i32 %19, i32 %20) %22 = mul %18 %21 store %22, %1 br %23 23: %24 = load %1 ret %24 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i32, align 4 %z = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %x %3 = load %x %4 = icmp slt %3 0 br %4, %5, %6 5: store 0, %1 br %15 6: %7 = call i32 @__VERIFIER_nondet_int() store %7, %y %8 = load %y %9 = icmp slt %8 0 br %9, %10, %11 10: store 0, %1 br %15 11: %12 = call i32 @__VERIFIER_nondet_int() store %12, %z %13 = load %x %14 = call i32 @twoWay(i32 1, i32 %13) br %15 15: %16 = load %1 ret %16 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) SEGraph to IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 105 rulesP rules: f_181 -> f_182(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_182(v1, v2, 3, 1, 4) -> f_183(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_183(v1, v3, v2, v4, 3, 1, 4) -> f_184(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_184(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_185(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) :|: 1 <= v7 && v8 = 3 + v7 && 4 <= v8 f_185(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) -> f_186(v1, v3, v5, v7, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE f_186(v1, v3, v5, v7, v2, v4, v6, v8, 0, 3, 1, 4) -> f_187(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE f_187(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_188(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE f_188(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_189(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: 0 = 0 f_189(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_190(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: v9 < 0 f_189(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_191(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: 0 <= v9 f_190(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_192(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 f_191(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_193(v1, v3, v5, v7, v9, 0, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_192(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) -> f_194(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE f_193(v1, v3, v5, v7, v9, 0, v2, v4, v6, v8, 3, 1, 4) -> f_195(v1, v3, v5, v7, v9, 0, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_194(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) -> f_196(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE f_195(v1, v3, v5, v7, v9, 0, v2, v4, v6, v8, 3, 1, 4) -> f_197(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_196(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) -> f_198(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE f_197(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_199(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_198(v1, v3, v5, v7, v9, 1, v2, v4, v6, v8, 0, 3, 4) -> f_200(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, v8, 3, 4) :|: 0 = 0 f_199(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_201(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_201(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_202(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: v11 < 0 f_201(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_203(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: 0 <= v11 f_202(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_204(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) :|: 0 = 0 f_203(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_205(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_204(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) -> f_206(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) :|: TRUE f_205(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_207(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_206(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) -> f_208(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) :|: TRUE f_207(v1, v3, v5, v7, v9, 0, v11, v2, v4, v6, v8, 3, 1, 4) -> f_209(v1, v3, v5, v7, v9, 0, v11, v13, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_208(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) -> f_210(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) :|: TRUE f_209(v1, v3, v5, v7, v9, 0, v11, v13, v2, v4, v6, v8, 3, 1, 4) -> f_211(v1, v3, v5, v7, v9, 0, v11, v13, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_210(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) -> f_212(v1, v3, v5, v7, v9, 0, v11, 1, v2, v4, v6, v8, 3, 4) :|: 0 = 0 f_211(v1, v3, v5, v7, v9, 0, v11, v13, v2, v4, v6, v8, 3, 1, 4) -> f_213(v1, v3, v5, v7, v9, 0, v11, v13, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_213(v1, v3, v5, v7, v9, 0, v11, v13, v2, v4, v6, v8, 3, 1, 4) -> f_214(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: 0 = 0 f_214(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_215(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: TRUE f_214(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_294(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: TRUE f_214(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_368(1, v9, v536, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: TRUE f_214(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_378(1, v9, v599, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: TRUE f_214(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_386(1, v9, v599, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: TRUE f_215(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_239(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v9, v11, v13, 3, 4) :|: TRUE f_239(1, v28, v29, v30, v31, v32, v33, v34, v35, v36, 0, v38, v39, v40, 3, 4) -> f_274(1, v28, v29, v30, v31, v32, v33, v34, v35, v36, 0, v38, v39, v40, 3, 4) :|: TRUE f_274(1, v78, v79, v80, v81, v82, v83, v84, v85, v86, 0, v88, v89, v90, 3, 4) -> f_275(1, v78, v91, v79, v80, v81, v82, v83, v84, v85, v86, v92, 0, v88, v89, v90, 3, 4) :|: 1 <= v91 && v92 = 3 + v91 && 4 <= v92 f_275(1, v78, v91, v79, v80, v81, v82, v83, v84, v85, v86, v92, 0, v88, v89, v90, 3, 4) -> f_276(1, v78, v91, v93, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, 0, v88, v89, v90, 3, 4) :|: 1 <= v93 && v94 = 3 + v93 && 4 <= v94 f_276(1, v78, v91, v93, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, 0, v88, v89, v90, 3, 4) -> f_277(1, v78, v91, v93, v95, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, 0, v88, v89, v90, 3, 4) :|: 1 <= v95 && v96 = 3 + v95 && 4 <= v96 f_277(1, v78, v91, v93, v95, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, 0, v88, v89, v90, 3, 4) -> f_278(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: 1 <= v97 && v98 = 3 + v97 && 4 <= v98 f_278(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_279(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: TRUE f_279(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_280(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: TRUE f_280(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_281(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: 0 = 0 f_281(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_282(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: v78 < 0 f_281(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_283(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: 0 <= v78 f_282(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_284(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: 0 = 0 f_283(1, v78, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_285(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_284(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_286(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: TRUE f_285(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_287(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_286(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_288(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: TRUE f_287(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_289(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_288(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_290(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: TRUE f_289(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_291(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_290(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) -> f_292(1, -1, v91, v93, v95, v97, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, 0, v88, v89, v90, 3, 4) :|: 0 = 0 f_291(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_293(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_293(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_295(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_294(1, v9, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_296(v1, v3, v5, v7, v9, 0, v11, v13, 1, v2, v4, v6, v8, 3, 4) :|: 0 = 0 f_295(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_297(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_296(v1, v3, v5, v7, v9, 0, v11, v13, 1, v2, v4, v6, v8, 3, 4) -> f_298(v1, v3, v5, v7, v9, 0, v11, v13, 1, v2, v4, v6, v8, 3, 4) :|: TRUE f_297(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_299(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_298(v1, v3, v5, v7, v9, 0, v11, v13, 1, v2, v4, v6, v8, 3, 4) -> f_300(v1, v3, v5, v7, v9, 0, v11, v13, 1, v2, v4, v6, v8, 3, 4) :|: 0 = 0 f_299(1, v78, v91, v93, v95, v97, 0, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_301(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 1 + v126 = v78 && 0 <= 1 + v126 f_301(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_302(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_302(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_303(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_303(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_304(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_304(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_305(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_305(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_306(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_306(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_307(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: 0 = 0 f_307(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_308(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: TRUE f_307(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_309(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: TRUE f_307(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_369(1, v126, v548, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: TRUE f_307(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_379(1, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: TRUE f_307(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_387(1, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: TRUE f_308(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_274(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, 0, v88, v89, v90, 3, 4) :|: TRUE f_309(1, v126, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_310(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_310(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_311(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_311(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_312(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_312(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_313(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_313(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_314(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_314(1, v78, v91, v93, v95, v97, 0, v126, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_325(1, v78, v91, v93, v95, v97, 0, v126, 1, v126, v92, v94, v96, v98, v79, v80, v81, v82, v83, v84, v85, v86, v88, v89, v90, 3, 4) :|: TRUE f_325(1, v231, v232, v233, v234, v235, 0, v237, v238, v239, v240, v241, v242, v243, v244, v245, v246, v247, v248, v249, v250, v251, v252, v253, v254, 3, 4) -> f_336(1, v231, v232, v233, v234, v235, 0, v237, v238, v239, v240, v241, v242, v243, 3, 4) :|: TRUE f_336(1, v327, v328, v329, v330, v331, 0, v333, v334, v335, v336, v337, v338, v339, 3, 4) -> f_357(1, v327, v328, v329, v330, v331, 0, v333, v334, v335, v336, v337, v338, v339, 3, 4) :|: TRUE f_368(1, v9, v536, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_370(v1, v3, v5, v7, v9, 0, v11, v13, v536, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_369(1, v126, v548, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_371(1, v78, v91, v93, v95, v97, 0, v126, v548, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_370(v1, v3, v5, v7, v9, 0, v11, v13, v536, v2, v4, v6, v8, 3, 1, 4) -> f_372(v1, v3, v5, v7, v9, 0, v11, v13, v536, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_371(1, v78, v91, v93, v95, v97, 0, v126, v548, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_373(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: v567 = v126 * v548 f_372(v1, v3, v5, v7, v9, 0, v11, v13, v536, v2, v4, v6, v8, 3, 1, 4) -> f_374(v1, v3, v5, v7, v9, 0, v11, v13, v536, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_373(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_375(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_375(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_376(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_376(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_377(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_377(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_357(1, v78, v91, v93, v95, v97, 0, v126, v548, v567, v92, v94, v96, v98, 3, 4) :|: TRUE f_378(1, v9, v599, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_380(v1, v3, v5, v7, v9, 0, v11, v13, v599, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 f_379(1, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_381(1, v78, v91, v93, v95, v97, 0, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: 0 = 0 f_380(v1, v3, v5, v7, v9, 0, v11, v13, v599, v2, v4, v6, v8, 3, 1, 4) -> f_382(v1, v3, v5, v7, v9, 0, v11, v13, v599, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_381(1, v78, v91, v93, v95, v97, 0, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_383(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: v643 = v126 * v611 f_382(v1, v3, v5, v7, v9, 0, v11, v13, v599, v2, v4, v6, v8, 3, 1, 4) -> f_372(v1, v3, v5, v7, v9, 0, v11, v13, v599, v2, v4, v6, v8, 3, 1, 4) :|: TRUE f_383(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_384(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_384(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_385(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_385(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) -> f_376(1, v78, v91, v93, v95, v97, 0, v126, v611, v643, v79, v80, v81, v82, v83, v84, v85, v86, v92, v94, v96, v98, v88, v89, v90, 3, 4) :|: TRUE f_386(1, v9, v599, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) -> f_378(1, v9, v599, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 4) :|: TRUE f_387(1, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) -> f_379(1, v126, v611, v79, v80, v81, v82, v83, v84, v85, v86, v91, v92, v93, v94, v95, v96, v97, v98, 0, v88, v89, v90, v78, 3, 4) :|: TRUE Combined rules. Obtained 9 rulesP rules: f_281(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) -> f_281(1, v126:0, v91:1, v93:1, v95:1, v97:1, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, 3 + v91:1, 3 + v93:1, 3 + v95:1, 3 + v97:1, 0, v88:0, v89:0, v90:0, 3, 4) :|: v126:0 > -2 && v91:1 > 0 && v93:1 > 0 && v95:1 > 0 && v97:1 > 0 f_181 -> f_300(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, v13:0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 > -1 && v9:0 > -1 f_181 -> f_281(1, v9:0, v91:0, v93:0, v95:0, v97:0, v1:0, 3 + v1:0, v3:0, 3 + v3:0, v5:0, 3 + v5:0, v7:0, 3 + v7:0, 3 + v91:0, 3 + v93:0, 3 + v95:0, 3 + v97:0, 0, v9:0, v11:0, v13:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > -1 && v11:0 > -1 && v91:0 > 0 && v93:0 > 0 && v95:0 > 0 && v97:0 > 0 f_281(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) -> f_357(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, 0, v126:0, v611:0, v126:0 * v611:0, v92:0, v94:0, v96:0, v98:0, 3, 4) :|: v126:0 > -2 f_181 -> f_374(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, v13:0, v536:0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 > -1 && v9:0 > -1 f_181 -> f_212(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 < 0 && v9:0 > -1 f_181 -> f_200(v1:0, v3:0, v5:0, v7:0, v9:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 < 0 f_281(1, v78:0, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) -> f_292(1, -1, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) :|: v78:0 < 0 f_281(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) -> f_357(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, 0, v126:0, 1, v126:0, v92:0, v94:0, v96:0, v98:0, 3, 4) :|: v126:0 > -2 Filtered unneeded arguments: f_281(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) -> f_281(x2) Removed division, modulo operations, cleaned up constraints. Obtained 9 rules.P rules: f_281(sum~cons_1~v126:0) -> f_281(v126:0) :|: v126:0 > -2 && sum~cons_1~v126:0 = 1 + v126:0 f_181 -> f_300(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, v13:0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > -1 && v11:0 > -1 f_181 -> f_281(v9:0) :|: v9:0 > -1 f_281(sum~cons_1~v126:0) -> f_357(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, 0, v126:0, v611:0, v126:0 * v611:0, v92:0, v94:0, v96:0, v98:0, 3, 4) :|: v126:0 > -2 && sum~cons_1~v126:0 = 1 + v126:0 f_181 -> f_374(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, v13:0, v536:0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 1, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > -1 && v11:0 > -1 f_181 -> f_212(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > -1 && v11:0 < 0 f_181 -> f_200(v1:0, v3:0, v5:0, v7:0, v9:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v9:0 < 0 && v7:0 > 0 f_281(v78:0) -> f_292(1, -1, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) :|: v78:0 < 0 f_281(sum~cons_1~v126:0) -> f_357(1, 1 + v126:0, v91:0, v93:0, v95:0, v97:0, 0, v126:0, 1, v126:0, v92:0, v94:0, v96:0, v98:0, 3, 4) :|: v126:0 > -2 && sum~cons_1~v126:0 = 1 + v126:0 ---------------------------------------- (6) Obligation: Rules: f_281(sum~cons_1~v126:0) -> f_281(v126:0) :|: v126:0 > -2 && sum~cons_1~v126:0 = 1 + v126:0 f_181 -> f_300(v1:0, v3:0, v5:0, v7:0, v9:0, 0, v11:0, v13:0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > -1 && v11:0 > -1 f_181 -> f_281(x) :|: x > -1 f_281(x1) -> f_357(1, 1 + x2, x3, x4, x5, x6, 0, x2, x7, x2 * x7, x8, x9, x10, x11, 3, 4) :|: x2 > -2 && x1 = 1 + x2 f_181 -> f_374(x12, x13, x14, x15, x16, 0, x17, x18, x19, 3 + x12, 3 + x13, 3 + x14, 3 + x15, 3, 1, 4) :|: x12 > 0 && x13 > 0 && x14 > 0 && x15 > 0 && x16 > -1 && x17 > -1 f_181 -> f_212(x20, x21, x22, x23, x24, 0, x25, 1, 3 + x20, 3 + x21, 3 + x22, 3 + x23, 3, 4) :|: x20 > 0 && x21 > 0 && x22 > 0 && x23 > 0 && x24 > -1 && x25 < 0 f_181 -> f_200(x26, x27, x28, x29, x30, 1, 0, 3 + x26, 3 + x27, 3 + x28, 3 + x29, 3, 4) :|: x26 > 0 && x27 > 0 && x28 > 0 && x30 < 0 && x29 > 0 f_281(v78:0) -> f_292(1, -1, v91:0, v93:0, v95:0, v97:0, v79:0, v80:0, v81:0, v82:0, v83:0, v84:0, v85:0, v86:0, v92:0, v94:0, v96:0, v98:0, 0, v88:0, v89:0, v90:0, 3, 4) :|: v78:0 < 0 f_281(x31) -> f_357(1, 1 + x32, x33, x34, x35, x36, 0, x32, 1, x32, x37, x38, x39, x40, 3, 4) :|: x32 > -2 && x31 = 1 + x32 Start term: f_181 ---------------------------------------- (7) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_281_24,1) (f_181_24,2) (f_300_24,3) (f_357_24,4) (f_374_24,5) (f_212_24,6) (f_200_24,7) (f_292_24,8) ---------------------------------------- (8) Obligation: START: 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 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := oldX0 - 1; oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); oldX40 := nondet(); oldX41 := nondet(); oldX42 := nondet(); oldX43 := nondet(); oldX44 := nondet(); oldX45 := nondet(); oldX46 := nondet(); oldX47 := nondet(); assume(oldX24 > -2 && oldX0 = 1 + oldX24); x0 := oldX0 - 1; x1 := oldX25; x2 := oldX26; x3 := oldX27; x4 := oldX28; x5 := oldX29; x6 := oldX30; x7 := oldX31; x8 := oldX32; x9 := oldX33; x10 := oldX34; x11 := oldX35; x12 := oldX36; x13 := oldX37; x14 := oldX38; x15 := oldX39; x16 := oldX40; x17 := oldX41; x18 := oldX42; x19 := oldX43; x20 := oldX44; x21 := oldX45; x22 := oldX46; x23 := oldX47; TO: 1; 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 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); assume(oldX24 > 0 && oldX25 > 0 && oldX26 > 0 && oldX27 > 0 && oldX28 > -1 && oldX29 > -1); x0 := oldX24; x1 := oldX25; x2 := oldX26; x3 := oldX27; x4 := oldX28; x5 := 0; x6 := oldX29; x7 := oldX30; x8 := 1; x9 := 3 + oldX24; x10 := 3 + oldX25; x11 := 3 + oldX26; x12 := 3 + oldX27; x13 := 3; x14 := 4; x15 := oldX31; x16 := oldX32; x17 := oldX33; x18 := oldX34; x19 := oldX35; x20 := oldX36; x21 := oldX37; x22 := oldX38; x23 := oldX39; TO: 3; 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 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); oldX40 := nondet(); oldX41 := nondet(); oldX42 := nondet(); oldX43 := nondet(); oldX44 := nondet(); oldX45 := nondet(); oldX46 := nondet(); oldX47 := nondet(); assume(oldX24 > -1); x0 := oldX24; x1 := oldX25; x2 := oldX26; x3 := oldX27; x4 := oldX28; x5 := oldX29; x6 := oldX30; x7 := oldX31; x8 := oldX32; x9 := oldX33; x10 := oldX34; x11 := oldX35; x12 := oldX36; x13 := oldX37; x14 := oldX38; x15 := oldX39; x16 := oldX40; x17 := oldX41; x18 := oldX42; x19 := oldX43; x20 := oldX44; x21 := oldX45; x22 := oldX46; x23 := oldX47; 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 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := oldX0 - 1; oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); oldX40 := nondet(); oldX41 := nondet(); assume(oldX24 > -2 && oldX0 = 1 + oldX24); x0 := 1; x1 := 1 + oldX24; x2 := oldX25; x3 := oldX26; x4 := oldX27; x5 := oldX28; x6 := 0; x7 := oldX0 - 1; x8 := oldX29; x9 := oldX24 * oldX29; x10 := oldX30; x11 := oldX31; x12 := oldX32; x13 := oldX33; x14 := 3; x15 := 4; x16 := oldX34; x17 := oldX35; x18 := oldX36; x19 := oldX37; x20 := oldX38; x21 := oldX39; x22 := oldX40; x23 := oldX41; TO: 4; 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 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); assume(oldX24 > 0 && oldX25 > 0 && oldX26 > 0 && oldX27 > 0 && oldX28 > -1 && oldX29 > -1); x0 := oldX24; x1 := oldX25; x2 := oldX26; x3 := oldX27; x4 := oldX28; x5 := 0; x6 := oldX29; x7 := oldX30; x8 := oldX31; x9 := 3 + oldX24; x10 := 3 + oldX25; x11 := 3 + oldX26; x12 := 3 + oldX27; x13 := 3; x14 := 1; x15 := 4; x16 := oldX32; x17 := oldX33; x18 := oldX34; x19 := oldX35; x20 := oldX36; x21 := oldX37; x22 := oldX38; x23 := oldX39; TO: 5; 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 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); assume(oldX24 > 0 && oldX25 > 0 && oldX26 > 0 && oldX27 > 0 && oldX28 > -1 && oldX29 < 0); x0 := oldX24; x1 := oldX25; x2 := oldX26; x3 := oldX27; x4 := oldX28; x5 := 0; x6 := oldX29; x7 := 1; x8 := 3 + oldX24; x9 := 3 + oldX25; x10 := 3 + oldX26; x11 := 3 + oldX27; x12 := 3; x13 := 4; x14 := oldX30; x15 := oldX31; x16 := oldX32; x17 := oldX33; x18 := oldX34; x19 := oldX35; x20 := oldX36; x21 := oldX37; x22 := oldX38; x23 := oldX39; TO: 6; 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 := x11; oldX12 := x12; oldX13 := x13; oldX14 := x14; oldX15 := x15; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); assume(oldX24 > 0 && oldX25 > 0 && oldX26 > 0 && oldX28 < 0 && oldX27 > 0); x0 := oldX24; x1 := oldX25; x2 := oldX26; x3 := oldX27; x4 := oldX28; x5 := 1; x6 := 0; x7 := 3 + oldX24; x8 := 3 + oldX25; x9 := 3 + oldX26; x10 := 3 + oldX27; x11 := 3; x12 := 4; x13 := oldX29; x14 := oldX30; x15 := oldX31; x16 := oldX32; x17 := oldX33; x18 := oldX34; x19 := oldX35; x20 := oldX36; x21 := oldX37; x22 := oldX38; x23 := oldX39; 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; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := nondet(); oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); oldX40 := nondet(); oldX41 := nondet(); oldX42 := nondet(); assume(oldX0 < 0); x0 := 1; x1 := -1; x2 := oldX24; x3 := oldX25; x4 := oldX26; x5 := oldX27; x6 := oldX28; x7 := oldX29; x8 := oldX30; x9 := oldX31; x10 := oldX32; x11 := oldX33; x12 := oldX34; x13 := oldX35; x14 := oldX36; x15 := oldX37; x16 := oldX38; x17 := oldX39; x18 := 0; x19 := oldX40; x20 := oldX41; x21 := oldX42; x22 := 3; x23 := 4; 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; oldX16 := x16; oldX17 := x17; oldX18 := x18; oldX19 := x19; oldX20 := x20; oldX21 := x21; oldX22 := x22; oldX23 := x23; oldX24 := oldX0 - 1; oldX25 := nondet(); oldX26 := nondet(); oldX27 := nondet(); oldX28 := nondet(); oldX29 := nondet(); oldX30 := nondet(); oldX31 := nondet(); oldX32 := nondet(); oldX33 := nondet(); oldX34 := nondet(); oldX35 := nondet(); oldX36 := nondet(); oldX37 := nondet(); oldX38 := nondet(); oldX39 := nondet(); oldX40 := nondet(); assume(oldX24 > -2 && oldX0 = 1 + oldX24); x0 := 1; x1 := 1 + oldX24; x2 := oldX25; x3 := oldX26; x4 := oldX27; x5 := oldX28; x6 := 0; x7 := oldX0 - 1; x8 := 1; x9 := oldX24; x10 := oldX29; x11 := oldX30; x12 := oldX31; x13 := oldX32; x14 := 3; x15 := 4; x16 := oldX33; x17 := oldX34; x18 := oldX35; x19 := oldX36; x20 := oldX37; x21 := oldX38; x22 := oldX39; x23 := oldX40; TO: 4; ---------------------------------------- (9) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 10, 15, 16 using the following rank functions: - Rank function 1: RF for loc. 11: 1+2*x0 RF for loc. 12: 2*x0 Bound for (chained) transitions 15: 0 Bound for (chained) transitions 16: 0 - Rank function 2: RF for loc. 11: 0 RF for loc. 12: -1 Bound for (chained) transitions 10: 0 ---------------------------------------- (10) YES