/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, 168 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 2785 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToLassoProof [EQUIVALENT, 2 ms] (6) LLVM Symbolic Execution Lasso (7) Lasso2IRS [SOUND, 121 ms] (8) IntTRS (9) IRS2T2 [EQUIVALENT, 0 ms] (10) T2IntSys (11) T2 [EQUIVALENT, 1143 ms] (12) 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: "test_fun" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (x i32, y i32, z i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 %c = alloca i32, align 4 store %x, %1 store %y, %2 store %z, %3 store 0, %c br %4 4: %5 = load %1 %6 = load %2 %7 = load %3 %8 = add %6 %7 %9 = icmp sgt %5 %8 br %9, %10, %17 10: %11 = load %2 %12 = add %11 1 store %12, %2 %13 = load %3 %14 = add %13 1 store %14, %3 %15 = load %c %16 = add %15 1 store %16, %c br %4 17: %18 = load %c ret %18 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() %3 = call i32 @__VERIFIER_nondet_int() %4 = call i32 @__VERIFIER_nondet_int() %5 = call i32 @test_fun(i32 %2, i32 %3, i32 %4) 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 (EQUIVALENT) Converted SEGraph to 1 independent lasso. ---------------------------------------- (6) Obligation: Lasso ---------------------------------------- (7) Lasso2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 55 rulesP rules: f_259(v143, v144, v145, v146, v147, v148, v149, v150, v151, v152, 1, v154, v155, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_260(v143, v144, v145, v146, v147, v148, v149, v154, v151, v152, 1, v150, v155, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_260(v143, v144, v145, v146, v147, v148, v149, v154, v151, v152, 1, v150, v155, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_261(v143, v144, v145, v146, v147, v148, v149, v154, v155, v152, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_261(v143, v144, v145, v146, v147, v148, v149, v154, v155, v152, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_262(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: v165 = v154 + v155 f_262(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_263(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: v165 < v143 f_263(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_265(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_265(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_267(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: TRUE f_267(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v150, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_269(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_269(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_271(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: v166 = 1 + v154 f_271(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_273(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: TRUE f_273(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v151, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_274(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_274(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_275(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: v168 = 1 + v155 f_275(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_276(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: TRUE f_276(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_277(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_277(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_278(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4, 2) :|: v170 = 1 + v157 && 2 <= v170 f_278(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4, 2) -> f_279(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4, 2) :|: TRUE f_279(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4, 2) -> f_280(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4, 2) :|: TRUE f_280(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4, 2) -> f_258(v143, v144, v145, v146, v147, v148, v149, v154, v155, v165, 1, v166, v168, v157, v170, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: TRUE f_258(v143, v144, v145, v146, v147, v148, v149, v150, v151, v152, 1, v154, v155, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) -> f_259(v143, v144, v145, v146, v147, v148, v149, v150, v151, v152, 1, v154, v155, v156, v157, v158, v159, v160, v161, v162, v163, 0, 3, 4) :|: 0 = 0 f_106 -> f_107(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_107(v1, v2, 3, 1, 4) -> f_108(v1, v2, 0, 3, 1, 4) :|: TRUE f_108(v1, v2, 0, 3, 1, 4) -> f_109(v1, v3, v2, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v2, 0, 3, 1, 4) -> f_110(v1, v3, v4, v2, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v4, v2, 0, 3, 1, 4) -> f_111(v1, v3, v4, v5, v2, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v4, v5, v2, 0, 3, 1, 4) -> f_112(v3, v4, v5, v1, v2, 0, 3, 1, 4) :|: 0 = 0 f_112(v3, v4, v5, v1, v2, 0, 3, 1, 4) -> f_113(v3, v4, v5, v6, v1, v2, v7, 0, 3, 1, 4) :|: 1 <= v6 && v7 = 3 + v6 && 4 <= v7 f_113(v3, v4, v5, v6, v1, v2, v7, 0, 3, 1, 4) -> f_114(v3, v4, v5, v6, v8, v1, v2, v7, v9, 0, 3, 1, 4) :|: 1 <= v8 && v9 = 3 + v8 && 4 <= v9 f_114(v3, v4, v5, v6, v8, v1, v2, v7, v9, 0, 3, 1, 4) -> f_115(v3, v4, v5, v6, v8, v10, v1, v2, v7, v9, v11, 0, 3, 1, 4) :|: 1 <= v10 && v11 = 3 + v10 && 4 <= v11 f_115(v3, v4, v5, v6, v8, v10, v1, v2, v7, v9, v11, 0, 3, 1, 4) -> f_116(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: 1 <= v12 && v13 = 3 + v12 && 4 <= v13 f_116(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_117(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: TRUE f_117(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_118(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: TRUE f_118(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_119(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: TRUE f_119(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_120(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: TRUE f_120(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_121(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: TRUE f_121(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_122(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: 0 = 0 f_122(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_123(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: 0 = 0 f_123(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_124(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: 0 = 0 f_124(v3, v4, v5, v6, v8, v10, v12, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_125(v3, v4, v5, v6, v8, v10, v12, v17, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: v17 = v4 + v5 f_125(v3, v4, v5, v6, v8, v10, v12, v17, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_126(v3, v4, v5, v6, v8, v10, v12, v17, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) :|: v17 < v3 f_126(v3, v4, v5, v6, v8, v10, v12, v17, v1, v2, v7, v9, v11, v13, 0, 3, 1, 4) -> f_128(v3, v4, v5, v6, v8, v10, v12, v17, 1, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: 0 = 0 f_128(v3, v4, v5, v6, v8, v10, v12, v17, 1, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_130(v3, v4, v5, v6, v8, v10, v12, v17, 1, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: TRUE f_130(v3, v4, v5, v6, v8, v10, v12, v17, 1, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_132(v3, v4, v5, v6, v8, v10, v12, v17, 1, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: 0 = 0 f_132(v3, v4, v5, v6, v8, v10, v12, v17, 1, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_134(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: v18 = 1 + v4 f_134(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_136(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: TRUE f_136(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_137(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: 0 = 0 f_137(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_138(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: v20 = 1 + v5 f_138(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_139(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, v1, v2, v7, v9, v11, v13, 0, 3, 4) :|: TRUE f_139(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, v1, v2, v7, v9, v11, v13, 0, 3, 4) -> f_140(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) :|: 0 = 0 f_140(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) -> f_141(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) :|: 0 = 0 f_141(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) -> f_142(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) :|: TRUE f_142(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) -> f_143(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) :|: TRUE f_143(v3, v4, v5, v6, v8, v10, v12, v17, 1, v18, v20, 0, v1, v2, v7, v9, v11, v13, 3, 4) -> f_166(v3, v4, v5, v6, v8, v10, v12, v4, v5, v17, 1, v18, v20, 0, 1, v1, v2, v7, v9, v11, v13, 0, 3, 2, 4) :|: TRUE f_166(v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 1, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 0, 3, 2, 4) -> f_189(v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 1, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 0, 3, 2, 4) :|: TRUE f_189(v56, v57, v58, v59, v60, v61, v62, v63, v64, v65, 1, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, 0, 3, 2, 4) -> f_212(v56, v57, v58, v59, v60, v61, v62, v63, v64, v65, 1, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, 0, 3, 4) :|: TRUE f_212(v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, 1, v96, v97, v98, v99, v100, v101, v102, v103, v104, v105, 0, 3, 4) -> f_235(v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, 1, v96, v97, v98, v99, v100, v101, v102, v103, v104, v105, 0, 3, 4) :|: TRUE f_235(v114, v115, v116, v117, v118, v119, v120, v121, v122, v123, 1, v125, v126, v127, v128, v129, v130, v131, v132, v133, v134, 0, 3, 4) -> f_258(v114, v115, v116, v117, v118, v119, v120, v121, v122, v123, 1, v125, v126, v127, v128, v129, v130, v131, v132, v133, v134, 0, 3, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_259(v143:0, v144:0, v145:0, v146:0, v147:0, v148:0, v149:0, v150:0, v151:0, v152:0, 1, v154:0, v155:0, v156:0, v157:0, v158:0, v159:0, v160:0, v161:0, v162:0, v163:0, 0, 3, 4) -> f_259(v143:0, v144:0, v145:0, v146:0, v147:0, v148:0, v149:0, v154:0, v155:0, v154:0 + v155:0, 1, 1 + v154:0, 1 + v155:0, v157:0, 1 + v157:0, v158:0, v159:0, v160:0, v161:0, v162:0, v163:0, 0, 3, 4) :|: v157:0 > 0 && v154:0 + v155:0 < v143:0 f_106 -> f_259(v3:0, v4:0, v5:0, v6:0, v8:0, v10:0, v12:0, v4:0, v5:0, v4:0 + v5:0, 1, 1 + v4:0, 1 + v5:0, 0, 1, v1:0, 3 + v1:0, 3 + v6:0, 3 + v8:0, 3 + v10:0, 3 + v12:0, 0, 3, 4) :|: v1:0 > 0 && v6:0 > 0 && v8:0 > 0 && v10:0 > 0 && v12:0 > 0 && v4:0 + v5:0 < v3:0 Filtered unneeded arguments: f_259(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_259(x1, x12, x13, x15) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_259(v143:0, v154:0, v155:0, v157:0) -> f_259(v143:0, 1 + v154:0, 1 + v155:0, 1 + v157:0) :|: v157:0 > 0 && v154:0 + v155:0 < v143:0 f_106 -> f_259(v3:0, 1 + v4:0, 1 + v5:0, 1) :|: v4:0 + v5:0 < v3:0 ---------------------------------------- (8) Obligation: Rules: f_259(v143:0, v154:0, v155:0, v157:0) -> f_259(v143:0, 1 + v154:0, 1 + v155:0, 1 + v157:0) :|: v157:0 > 0 && v154:0 + v155:0 < v143:0 f_106 -> f_259(v3:0, 1 + v4:0, 1 + v5:0, 1) :|: v4:0 + v5:0 < v3:0 Start term: f_106 ---------------------------------------- (9) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_259_4,1) (f_106_4,2) ---------------------------------------- (10) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(oldX3 > 0 && oldX1 + oldX2 < oldX0); x0 := oldX0; x1 := 1 + oldX1; x2 := 1 + oldX2; x3 := 1 + oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); oldX5 := nondet(); oldX6 := nondet(); assume(oldX5 + oldX6 < oldX4); x0 := oldX4; x1 := 1 + oldX5; x2 := 1 + oldX6; x3 := 1; TO: 1; ---------------------------------------- (11) 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: 2+2*x0-2*x1-2*x2 RF for loc. 6: 2*x0-2*x1-2*x2 Bound for (chained) transitions 3: 2 - Rank function 2: RF for loc. 5: x0-x1-x2 RF for loc. 6: -1+x0-x1-x2 Bound for (chained) transitions 4: 0 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (12) YES