17.54/5.68 YES 17.54/5.69 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 17.54/5.69 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 17.54/5.69 17.54/5.69 17.54/5.69 Termination of the given C Problem could be proven: 17.54/5.69 17.54/5.69 (0) C Problem 17.54/5.69 (1) CToLLVMProof [EQUIVALENT, 174 ms] 17.54/5.69 (2) LLVM problem 17.54/5.69 (3) LLVMToTerminationGraphProof [EQUIVALENT, 1693 ms] 17.54/5.69 (4) LLVM Symbolic Execution Graph 17.54/5.69 (5) SymbolicExecutionGraphToLassoProof [EQUIVALENT, 0 ms] 17.54/5.69 (6) LLVM Symbolic Execution Lasso 17.54/5.69 (7) Lasso2IRS [SOUND, 107 ms] 17.54/5.69 (8) IntTRS 17.54/5.69 (9) IRS2T2 [EQUIVALENT, 0 ms] 17.54/5.69 (10) T2IntSys 17.54/5.69 (11) T2 [EQUIVALENT, 1413 ms] 17.54/5.69 (12) YES 17.54/5.69 17.54/5.69 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (0) 17.54/5.69 Obligation: 17.54/5.69 c file /export/starexec/sandbox/benchmark/theBenchmark.c 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (1) CToLLVMProof (EQUIVALENT) 17.54/5.69 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (2) 17.54/5.69 Obligation: 17.54/5.69 LLVM Problem 17.54/5.69 17.54/5.69 Aliases: 17.54/5.69 17.54/5.69 Data layout: 17.54/5.69 17.54/5.69 "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" 17.54/5.69 17.54/5.69 Machine: 17.54/5.69 17.54/5.69 "x86_64-pc-linux-gnu" 17.54/5.69 17.54/5.69 Type definitions: 17.54/5.69 17.54/5.69 Global variables: 17.54/5.69 17.54/5.69 Function declarations and definitions: 17.54/5.69 17.54/5.69 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 17.54/5.69 *BasicFunctionTypename: "test_fun" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (x i32, y i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 17.54/5.69 0: 17.54/5.69 %1 = alloca i32, align 4 17.54/5.69 %2 = alloca i32, align 4 17.54/5.69 %3 = alloca i32, align 4 17.54/5.69 %x_ref = alloca *i32, align 8 17.54/5.69 %y_ref = alloca *i32, align 8 17.54/5.69 store %x, %2 17.54/5.69 store %y, %3 17.54/5.69 %4 = alloca i8, numElementsLit: 4 17.54/5.69 %5 = bitcast *i8 %4 to *i32 17.54/5.69 store %5, %x_ref 17.54/5.69 %6 = alloca i8, numElementsLit: 4 17.54/5.69 %7 = bitcast *i8 %6 to *i32 17.54/5.69 store %7, %y_ref 17.54/5.69 %8 = load %2 17.54/5.69 %9 = load %x_ref 17.54/5.69 store %8, %9 17.54/5.69 %10 = load %3 17.54/5.69 %11 = load %y_ref 17.54/5.69 store %10, %11 17.54/5.69 %12 = load %x_ref 17.54/5.69 %13 = load %12 17.54/5.69 %14 = icmp sle %13 0 17.54/5.69 br %14, %15, %18 17.54/5.69 15: 17.54/5.69 %16 = load %y_ref 17.54/5.69 %17 = load %16 17.54/5.69 store %17, %1 17.54/5.69 br %35 17.54/5.69 18: 17.54/5.69 br %19 17.54/5.69 19: 17.54/5.69 %20 = load %x_ref 17.54/5.69 %21 = load %20 17.54/5.69 %22 = load %y_ref 17.54/5.69 %23 = load %22 17.54/5.69 %24 = icmp sgt %21 %23 17.54/5.69 br %24, %25, %32 17.54/5.69 25: 17.54/5.69 %26 = load %y_ref 17.54/5.69 %27 = load %26 17.54/5.69 %28 = load %x_ref 17.54/5.69 %29 = load %28 17.54/5.69 %30 = add %27 %29 17.54/5.69 %31 = load %y_ref 17.54/5.69 store %30, %31 17.54/5.69 br %19 17.54/5.69 32: 17.54/5.69 %33 = load %y_ref 17.54/5.69 %34 = load %33 17.54/5.69 store %34, %1 17.54/5.69 br %35 17.54/5.69 35: 17.54/5.69 %36 = load %1 17.54/5.69 ret %36 17.54/5.69 17.54/5.69 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 17.54/5.69 0: 17.54/5.69 %1 = alloca i32, align 4 17.54/5.69 store 0, %1 17.54/5.69 %2 = call i32 @__VERIFIER_nondet_int() 17.54/5.69 %3 = call i32 @__VERIFIER_nondet_int() 17.54/5.69 %4 = call i32 @test_fun(i32 %2, i32 %3) 17.54/5.69 ret %4 17.54/5.69 17.54/5.69 17.54/5.69 Analyze Termination of all function calls matching the pattern: 17.54/5.69 main() 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (3) LLVMToTerminationGraphProof (EQUIVALENT) 17.54/5.69 Constructed symbolic execution graph for LLVM program and proved memory safety. 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (4) 17.54/5.69 Obligation: 17.54/5.69 SE Graph 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (5) SymbolicExecutionGraphToLassoProof (EQUIVALENT) 17.54/5.69 Converted SEGraph to 1 independent lasso. 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (6) 17.54/5.69 Obligation: 17.54/5.69 Lasso 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (7) Lasso2IRS (SOUND) 17.54/5.69 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 17.54/5.69 Generated rules. Obtained 63 rulesP rules: 17.54/5.69 f_280(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_281(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_281(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_282(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_282(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_283(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_283(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_284(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: v71 < v59 && 1 + v69 <= 0 17.54/5.69 f_284(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_286(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_286(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_288(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_288(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_290(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_290(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v69, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_292(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_292(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_294(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_294(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_296(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_296(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_298(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: v83 = v71 + v59 17.54/5.69 f_298(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_300(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_300(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_302(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_302(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_303(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_303(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_279(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v71, 1, v83, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_279(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) -> f_280(v59, v60, v61, v62, v63, v64, v65, v66, v67, 0, v69, 1, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_166 -> f_167(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 17.54/5.69 f_167(v1, v2, 3, 1, 4) -> f_168(v1, v2, 0, 3, 1, 4) :|: TRUE 17.54/5.69 f_168(v1, v2, 0, 3, 1, 4) -> f_169(v1, v3, v2, 0, 3, 1, 4) :|: TRUE 17.54/5.69 f_169(v1, v3, v2, 0, 3, 1, 4) -> f_170(v1, v3, v4, v2, 0, 3, 1, 4) :|: TRUE 17.54/5.69 f_170(v1, v3, v4, v2, 0, 3, 1, 4) -> f_171(v3, v4, v1, v2, 0, 3, 1, 4) :|: 0 = 0 17.54/5.69 f_171(v3, v4, v1, v2, 0, 3, 1, 4) -> f_172(v3, v4, v5, v1, v2, v6, 0, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 17.54/5.69 f_172(v3, v4, v5, v1, v2, v6, 0, 3, 1, 4) -> f_173(v3, v4, v5, v7, v1, v2, v6, v8, 0, 3, 1, 4) :|: 1 <= v7 && v8 = 3 + v7 && 4 <= v8 17.54/5.69 f_173(v3, v4, v5, v7, v1, v2, v6, v8, 0, 3, 1, 4) -> f_174(v3, v4, v5, v7, v9, v1, v2, v6, v8, v10, 0, 3, 1, 4) :|: 1 <= v9 && v10 = 3 + v9 && 4 <= v10 17.54/5.69 f_174(v3, v4, v5, v7, v9, v1, v2, v6, v8, v10, 0, 3, 1, 4) -> f_175(v3, v4, v5, v7, v9, v11, v1, v2, v6, v8, v10, v12, 0, 3, 7, 1, 4, 8) :|: 1 <= v11 && v12 = 7 + v11 && 8 <= v12 17.54/5.69 f_175(v3, v4, v5, v7, v9, v11, v1, v2, v6, v8, v10, v12, 0, 3, 7, 1, 4, 8) -> f_176(v3, v4, v5, v7, v9, v11, v13, v1, v2, v6, v8, v10, v12, v14, 0, 3, 7, 1, 4, 8) :|: 1 <= v13 && v14 = 7 + v13 && 8 <= v14 17.54/5.69 f_176(v3, v4, v5, v7, v9, v11, v13, v1, v2, v6, v8, v10, v12, v14, 0, 3, 7, 1, 4, 8) -> f_177(v3, v4, v5, v7, v9, v11, v13, v1, v2, v6, v8, v10, v12, v14, 0, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_177(v3, v4, v5, v7, v9, v11, v13, v1, v2, v6, v8, v10, v12, v14, 0, 3, 7, 1, 4, 8) -> f_178(v3, v4, v5, v7, v9, v11, v13, v1, v2, v6, v8, v10, v12, v14, 0, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_178(v3, v4, v5, v7, v9, v11, v13, v1, v2, v6, v8, v10, v12, v14, 0, 3, 7, 1, 4, 8) -> f_179(v3, v4, v5, v7, v9, v11, v13, v17, v1, v2, v6, v8, v10, v12, v14, v18, 0, 3, 7, 1, 4, 8) :|: 1 <= v17 && v18 = 3 + v17 && 4 <= v18 17.54/5.69 f_179(v3, v4, v5, v7, v9, v11, v13, v17, v1, v2, v6, v8, v10, v12, v14, v18, 0, 3, 7, 1, 4, 8) -> f_180(v3, v4, v5, v7, v9, v11, v13, v17, v1, v2, v6, v8, v10, v12, v14, v18, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_180(v3, v4, v5, v7, v9, v11, v13, v17, v1, v2, v6, v8, v10, v12, v14, v18, 0, 3, 7, 1, 4, 8) -> f_181(v3, v4, v5, v7, v9, v11, v13, v17, v1, v2, v6, v8, v10, v12, v14, v18, 0, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_181(v3, v4, v5, v7, v9, v11, v13, v17, v1, v2, v6, v8, v10, v12, v14, v18, 0, 3, 7, 1, 4, 8) -> f_182(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 1 <= v20 && v21 = 3 + v20 && 4 <= v21 17.54/5.69 f_182(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_183(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_183(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_184(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_184(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_185(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_185(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_186(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_186(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_187(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_187(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_188(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_188(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_189(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_189(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_190(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_190(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_191(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_191(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_192(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_192(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_194(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) :|: 0 < v3 17.54/5.69 f_194(v3, v4, v5, v7, v9, v11, v13, v17, v20, v1, v2, v6, v8, v10, v12, v14, v18, v21, 0, 3, 7, 1, 4, 8) -> f_196(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_196(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_198(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_198(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_200(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: TRUE 17.54/5.69 f_200(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_202(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_202(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_204(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_204(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_206(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_206(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_208(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: 0 = 0 17.54/5.69 f_208(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_210(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) :|: v4 < v3 17.54/5.69 f_210(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 1, 4, 8) -> f_212(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_212(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_214(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_214(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_216(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_216(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_218(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_218(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_220(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_220(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_222(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_222(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_224(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: v27 = v4 + v3 17.54/5.69 f_224(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_226(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: 0 = 0 17.54/5.69 f_226(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_228(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_228(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_229(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_229(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) -> f_254(v3, v4, v5, v7, v9, v11, v13, v17, v20, 0, v4, 1, v27, v1, v2, v6, v8, v10, v12, v14, v18, v21, 3, 7, 4, 8) :|: TRUE 17.54/5.69 f_254(v33, v34, v35, v36, v37, v38, v39, v40, v41, 0, v43, 1, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, 3, 7, 4, 8) -> f_279(v33, v34, v35, v36, v37, v38, v39, v40, v41, 0, v43, 1, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, 3, 7, 4, 8) :|: TRUE 17.54/5.69 Combined rules. Obtained 2 rulesP rules: 17.54/5.69 f_280(v59:0, v60:0, v61:0, v62:0, v63:0, v64:0, v65:0, v66:0, v67:0, 0, v69:0, 1, v71:0, v72:0, v73:0, v74:0, v75:0, v76:0, v77:0, v78:0, v79:0, v80:0, 3, 7, 4, 8) -> f_280(v59:0, v60:0, v61:0, v62:0, v63:0, v64:0, v65:0, v66:0, v67:0, 0, v71:0, 1, v71:0 + v59:0, v72:0, v73:0, v74:0, v75:0, v76:0, v77:0, v78:0, v79:0, v80:0, 3, 7, 4, 8) :|: v71:0 < v59:0 && v69:0 < 0 17.54/5.69 f_166 -> f_280(v3:0, v4:0, v5:0, v7:0, v9:0, v11:0, v13:0, v17:0, v20:0, 0, v4:0, 1, v4:0 + v3:0, v1:0, 3 + v1:0, 3 + v5:0, 3 + v7:0, 3 + v9:0, 7 + v11:0, 7 + v13:0, 3 + v17:0, 3 + v20:0, 3, 7, 4, 8) :|: v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > 0 && v11:0 > 0 && v13:0 > 0 && v17:0 > 0 && v20:0 > 0 && v4:0 < v3:0 && v3:0 > 0 17.54/5.69 Filtered unneeded arguments: 17.54/5.69 f_280(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) -> f_280(x1, x11, x13) 17.54/5.69 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 17.54/5.69 f_280(v59:0, v69:0, v71:0) -> f_280(v59:0, v71:0, v71:0 + v59:0) :|: v71:0 < v59:0 && v69:0 < 0 17.54/5.69 f_166 -> f_280(v3:0, v4:0, v4:0 + v3:0) :|: v4:0 < v3:0 && v3:0 > 0 17.54/5.69 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (8) 17.54/5.69 Obligation: 17.54/5.69 Rules: 17.54/5.69 f_280(v59:0, v69:0, v71:0) -> f_280(v59:0, v71:0, v71:0 + v59:0) :|: v71:0 < v59:0 && v69:0 < 0 17.54/5.69 f_166 -> f_280(v3:0, v4:0, v4:0 + v3:0) :|: v4:0 < v3:0 && v3:0 > 0 17.54/5.69 Start term: f_166 17.54/5.69 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (9) IRS2T2 (EQUIVALENT) 17.54/5.69 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 17.54/5.69 17.54/5.69 (f_280_3,1) 17.54/5.69 (f_166_3,2) 17.54/5.69 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (10) 17.54/5.69 Obligation: 17.54/5.69 START: 2; 17.54/5.69 17.54/5.69 FROM: 1; 17.54/5.69 oldX0 := x0; 17.54/5.69 oldX1 := x1; 17.54/5.69 oldX2 := x2; 17.54/5.69 assume(oldX2 < oldX0 && oldX1 < 0); 17.54/5.69 x0 := oldX0; 17.54/5.69 x1 := oldX2; 17.54/5.69 x2 := oldX2 + oldX0; 17.54/5.69 TO: 1; 17.54/5.69 17.54/5.69 FROM: 2; 17.54/5.69 oldX0 := x0; 17.54/5.69 oldX1 := x1; 17.54/5.69 oldX2 := x2; 17.54/5.69 oldX3 := nondet(); 17.54/5.69 oldX4 := nondet(); 17.54/5.69 assume(oldX4 < oldX3 && oldX3 > 0); 17.54/5.69 x0 := oldX3; 17.54/5.69 x1 := oldX4; 17.54/5.69 x2 := oldX4 + oldX3; 17.54/5.69 TO: 1; 17.54/5.69 17.54/5.69 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (11) T2 (EQUIVALENT) 17.54/5.69 Used the following cutpoint-specific lexicographic rank functions: 17.54/5.69 * For cutpoint 5, used the following rank functions/bounds (in descending priority order): 17.54/5.69 - RF -x2+x0, bound 1 17.54/5.69 17.54/5.69 ---------------------------------------- 17.54/5.69 17.54/5.69 (12) 17.54/5.69 YES 17.86/5.74 EOF