33.80/10.50 YES 33.80/10.51 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 33.80/10.51 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 33.80/10.51 33.80/10.51 33.80/10.51 Termination of the given C Problem could be proven: 33.80/10.51 33.80/10.51 (0) C Problem 33.80/10.51 (1) CToLLVMProof [EQUIVALENT, 173 ms] 33.80/10.51 (2) LLVM problem 33.80/10.51 (3) LLVMToTerminationGraphProof [EQUIVALENT, 5209 ms] 33.80/10.51 (4) LLVM Symbolic Execution Graph 33.80/10.51 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 33.80/10.51 (6) AND 33.80/10.51 (7) LLVM Symbolic Execution SCC 33.80/10.51 (8) SCC2IRS [SOUND, 150 ms] 33.80/10.51 (9) IntTRS 33.80/10.51 (10) IRS2T2 [EQUIVALENT, 0 ms] 33.80/10.51 (11) T2IntSys 33.80/10.51 (12) T2 [EQUIVALENT, 773 ms] 33.80/10.51 (13) YES 33.80/10.51 (14) LLVM Symbolic Execution SCC 33.80/10.51 (15) SCC2IRS [SOUND, 85 ms] 33.80/10.51 (16) IntTRS 33.80/10.51 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] 33.80/10.51 (18) IntTRS 33.80/10.51 (19) PolynomialOrderProcessor [EQUIVALENT, 12 ms] 33.80/10.51 (20) YES 33.80/10.51 (21) LLVM Symbolic Execution SCC 33.80/10.51 (22) SCC2IRS [SOUND, 71 ms] 33.80/10.51 (23) IntTRS 33.80/10.51 (24) TerminationGraphProcessor [EQUIVALENT, 3 ms] 33.80/10.51 (25) YES 33.80/10.51 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (0) 33.80/10.51 Obligation: 33.80/10.51 c file /export/starexec/sandbox/benchmark/theBenchmark.c 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (1) CToLLVMProof (EQUIVALENT) 33.80/10.51 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (2) 33.80/10.51 Obligation: 33.80/10.51 LLVM Problem 33.80/10.51 33.80/10.51 Aliases: 33.80/10.51 33.80/10.51 Data layout: 33.80/10.51 33.80/10.51 "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" 33.80/10.51 33.80/10.51 Machine: 33.80/10.51 33.80/10.51 "x86_64-pc-linux-gnu" 33.80/10.51 33.80/10.51 Type definitions: 33.80/10.51 33.80/10.51 Global variables: 33.80/10.51 33.80/10.51 Function declarations and definitions: 33.80/10.51 33.80/10.51 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 33.80/10.51 *BasicFunctionTypename: "test_fun" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (x i32, y i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 33.80/10.51 0: 33.80/10.51 %1 = alloca i32, align 4 33.80/10.51 %2 = alloca i32, align 4 33.80/10.51 %3 = alloca i32, align 4 33.80/10.51 %x_ref = alloca *i32, align 8 33.80/10.51 %y_ref = alloca *i32, align 8 33.80/10.51 store %x, %2 33.80/10.51 store %y, %3 33.80/10.51 %4 = alloca i8, numElementsLit: 4 33.80/10.51 %5 = bitcast *i8 %4 to *i32 33.80/10.51 store %5, %x_ref 33.80/10.51 %6 = alloca i8, numElementsLit: 4 33.80/10.51 %7 = bitcast *i8 %6 to *i32 33.80/10.51 store %7, %y_ref 33.80/10.51 %8 = load %2 33.80/10.51 %9 = load %x_ref 33.80/10.51 store %8, %9 33.80/10.51 %10 = load %3 33.80/10.51 %11 = load %y_ref 33.80/10.51 store %10, %11 33.80/10.51 br %12 33.80/10.51 12: 33.80/10.51 %13 = load %x_ref 33.80/10.51 %14 = load %13 33.80/10.51 %15 = icmp sge %14 0 33.80/10.51 br %15, %16, %41 33.80/10.51 16: 33.80/10.51 %17 = load %y_ref 33.80/10.51 store 1, %17 33.80/10.51 br %18 33.80/10.51 18: 33.80/10.51 %19 = load %x_ref 33.80/10.51 %20 = load %19 33.80/10.51 %21 = load %y_ref 33.80/10.51 %22 = load %21 33.80/10.51 %23 = icmp sgt %20 %22 33.80/10.51 br %23, %24, %36 33.80/10.51 24: 33.80/10.51 %25 = load %y_ref 33.80/10.51 %26 = load %25 33.80/10.51 %27 = icmp sle %26 0 33.80/10.51 br %27, %28, %31 33.80/10.51 28: 33.80/10.51 %29 = load %x_ref 33.80/10.51 %30 = load %29 33.80/10.51 store %30, %1 33.80/10.51 br %44 33.80/10.51 31: 33.80/10.51 %32 = load %y_ref 33.80/10.51 %33 = load %32 33.80/10.51 %34 = mul 2 %33 33.80/10.51 %35 = load %y_ref 33.80/10.51 store %34, %35 33.80/10.51 br %18 33.80/10.51 36: 33.80/10.51 %37 = load %x_ref 33.80/10.51 %38 = load %37 33.80/10.51 %39 = sub %38 1 33.80/10.51 %40 = load %x_ref 33.80/10.51 store %39, %40 33.80/10.51 br %12 33.80/10.51 41: 33.80/10.51 %42 = load %y_ref 33.80/10.51 %43 = load %42 33.80/10.51 store %43, %1 33.80/10.51 br %44 33.80/10.51 44: 33.80/10.51 %45 = load %1 33.80/10.51 ret %45 33.80/10.51 33.80/10.51 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 33.80/10.51 0: 33.80/10.51 %1 = alloca i32, align 4 33.80/10.51 store 0, %1 33.80/10.51 %2 = call i32 @__VERIFIER_nondet_int() 33.80/10.51 %3 = call i32 @__VERIFIER_nondet_int() 33.80/10.51 %4 = call i32 @test_fun(i32 %2, i32 %3) 33.80/10.51 ret %4 33.80/10.51 33.80/10.51 33.80/10.51 Analyze Termination of all function calls matching the pattern: 33.80/10.51 main() 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (3) LLVMToTerminationGraphProof (EQUIVALENT) 33.80/10.51 Constructed symbolic execution graph for LLVM program and proved memory safety. 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (4) 33.80/10.51 Obligation: 33.80/10.51 SE Graph 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (5) SymbolicExecutionGraphToSCCProof (SOUND) 33.80/10.51 Splitted symbolic execution graph to 3 SCCs. 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (6) 33.80/10.51 Complex Obligation (AND) 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (7) 33.80/10.51 Obligation: 33.80/10.51 SCC 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (8) SCC2IRS (SOUND) 33.80/10.51 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 33.80/10.51 Generated rules. Obtained 49 rulesP rules: 33.80/10.51 f_646(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, v812, 0, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_647(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_647(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_648(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_648(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_649(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_649(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_650(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_650(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v812, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_651(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_651(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_652(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: v834 = 2 * v811 && 2 <= v834 33.80/10.51 f_652(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_653(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_653(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_654(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_654(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_655(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_655(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_656(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_656(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_657(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_657(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_658(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_658(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_659(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_659(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_660(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: v834 < v809 && 3 <= v809 && 4 <= v815 && 4 <= v800 33.80/10.51 f_659(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_661(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: v809 <= v834 33.80/10.51 f_660(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_662(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_662(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_664(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_664(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_645(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_645(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, v812, 0, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_646(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v811, v812, 0, v814, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_661(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, v811, 0, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_663(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, 0, v811, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_663(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, 0, v811, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_665(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, 0, v811, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_665(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, 0, v811, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) -> f_690(v800, v801, v802, v803, v804, v805, v806, v807, v808, v809, 1, v834, 0, v811, v834, v815, v816, v817, v818, v819, v820, v821, v822, v823, v824, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_690(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1116, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_691(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1116, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_691(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1116, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_692(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_692(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_693(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 1 + v1126 = v1110 && 0 <= 1 + v1126 33.80/10.51 f_693(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_694(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_694(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_695(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_695(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_696(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_696(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_697(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_697(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1110, 1, v1112, 0, v1114, v1115, v1126, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_698(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_698(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_699(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 <= v1126 && 1 <= v1110 33.80/10.51 f_699(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_701(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_701(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_703(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_703(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_705(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_705(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_707(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_707(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_709(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_709(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) -> f_679(v1101, v1102, v1103, v1104, v1105, v1106, v1107, v1108, v1109, v1126, 1, v1110, v1112, 0, v1114, v1115, v1117, v1118, v1119, v1120, v1121, v1122, v1123, v1124, v1125, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_679(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1007, v1008, 0, v1010, v1011, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_680(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1007, v1008, 0, v1010, v1011, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_680(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1007, v1008, 0, v1010, v1011, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_681(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1008, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_681(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1008, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_682(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1008, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_682(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1008, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_683(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_683(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_684(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 1 < v1005 && 3 <= v1007 && 3 <= v996 && 4 <= v1011 && 2 <= v1010 33.80/10.51 f_683(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_685(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: v1005 <= 1 && v1007 <= 2 33.80/10.51 f_684(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_686(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1010, 0, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_686(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1010, 0, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_688(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1010, 0, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_688(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, v1010, 0, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_645(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 1, v1010, 0, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_685(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_687(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_687(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_689(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_689(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) -> f_690(v996, v997, v998, v999, v1000, v1001, v1002, v1003, v1004, v1005, 1, 1, 0, v1010, v1011, v1007, v1012, v1013, v1014, v1015, v1016, v1017, v1018, v1019, v1020, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 Combined rules. Obtained 4 rulesP rules: 33.80/10.51 f_683(v996:0, v997:0, v998:0, v999:0, v1000:0, v1001:0, v1002:0, v1003:0, v1004:0, 1 + v1126:0, 1, 0, v1010:0, v1011:0, v1007:0, v1012:0, v1013:0, v1014:0, v1015:0, v1016:0, v1017:0, v1018:0, v1019:0, v1020:0, 3, 7, 2, 4, 8) -> f_683(v996:0, v997:0, v998:0, v999:0, v1000:0, v1001:0, v1002:0, v1003:0, v1004:0, v1126:0, 1, 0, v1010:0, v1011:0, 1 + v1126:0, v1012:0, v1013:0, v1014:0, v1015:0, v1016:0, v1017:0, v1018:0, v1019:0, v1020:0, 3, 7, 2, 4, 8) :|: v1126:0 > -1 && v1126:0 < 1 && v1007:0 < 3 33.80/10.51 f_683(v996:0, v997:0, v998:0, v999:0, v1000:0, v1001:0, v1002:0, v1003:0, v1004:0, v1005:0, 1, 0, v1010:0, v1011:0, v1007:0, v1012:0, v1013:0, v1014:0, v1015:0, v1016:0, v1017:0, v1018:0, v1019:0, v1020:0, 3, 7, 2, 4, 8) -> f_646(v996:0, v997:0, v998:0, v999:0, v1000:0, v1001:0, v1002:0, v1003:0, v1004:0, v1005:0, 1, 1, v1010:0, 0, v1011:0, v1007:0, v1012:0, v1013:0, v1014:0, v1015:0, v1016:0, v1017:0, v1018:0, v1019:0, v1020:0, 3, 7, 2, 4, 8) :|: v1007:0 > 2 && v1005:0 > 1 && v996:0 > 2 && v1010:0 > 1 && v1011:0 > 3 33.80/10.51 f_646(v800:0, v801:0, v802:0, v803:0, v804:0, v805:0, v806:0, v807:0, v808:0, v809:0, 1, v811:0, v812:0, 0, v814:0, v815:0, v816:0, v817:0, v818:0, v819:0, v820:0, v821:0, v822:0, v823:0, v824:0, 3, 7, 2, 4, 8) -> f_646(v800:0, v801:0, v802:0, v803:0, v804:0, v805:0, v806:0, v807:0, v808:0, v809:0, 1, 2 * v811:0, v811:0, 0, 2 * v811:0, v815:0, v816:0, v817:0, v818:0, v819:0, v820:0, v821:0, v822:0, v823:0, v824:0, 3, 7, 2, 4, 8) :|: 2 * v811:0 > 1 && v809:0 > 2 && v809:0 > 2 * v811:0 && v800:0 > 3 && v815:0 > 3 33.80/10.51 f_646(v800:0, v801:0, v802:0, v803:0, v804:0, v805:0, v806:0, v807:0, v808:0, 1 + v1126:0, 1, v811:0, v812:0, 0, v814:0, v815:0, v816:0, v817:0, v818:0, v819:0, v820:0, v821:0, v822:0, v823:0, v824:0, 3, 7, 2, 4, 8) -> f_683(v800:0, v801:0, v802:0, v803:0, v804:0, v805:0, v806:0, v807:0, v808:0, v1126:0, 1, 0, v811:0, 2 * v811:0, 1 + v1126:0, v816:0, v817:0, v818:0, v819:0, v820:0, v821:0, v822:0, v823:0, v824:0, 3, 7, 2, 4, 8) :|: v1126:0 > -1 && 2 * v811:0 > 1 && 2 * v811:0 >= 1 + v1126:0 33.80/10.51 Filtered unneeded arguments: 33.80/10.51 f_683(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) -> f_683(x1, x10, x13, x14, x15) 33.80/10.51 f_646(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) -> f_646(x1, x10, x12, x16) 33.80/10.51 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 33.80/10.51 f_683(v996:0, sum~cons_1~v1126:0, v1010:0, v1011:0, v1007:0) -> f_683(v996:0, v1126:0, v1010:0, v1011:0, 1 + v1126:0) :|: v1126:0 < 1 && v1007:0 < 3 && v1126:0 > -1 && sum~cons_1~v1126:0 = 1 + v1126:0 33.80/10.51 f_683(v996:0, v1005:0, v1010:0, v1011:0, v1007:0) -> f_646(v996:0, v1005:0, 1, v1007:0) :|: v1005:0 > 1 && v1007:0 > 2 && v996:0 > 2 && v1011:0 > 3 && v1010:0 > 1 33.80/10.51 f_646(v800:0, v809:0, v811:0, v815:0) -> f_646(v800:0, v809:0, 2 * v811:0, v815:0) :|: v809:0 > 2 && 2 * v811:0 > 1 && v809:0 > 2 * v811:0 && v815:0 > 3 && v800:0 > 3 33.80/10.51 f_646(v800:0, sum~cons_1~v1126:0, v811:0, v815:0) -> f_683(v800:0, v1126:0, v811:0, 2 * v811:0, 1 + v1126:0) :|: 2 * v811:0 > 1 && 2 * v811:0 >= 1 + v1126:0 && v1126:0 > -1 && sum~cons_1~v1126:0 = 1 + v1126:0 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (9) 33.80/10.51 Obligation: 33.80/10.51 Rules: 33.80/10.51 f_683(v996:0, sum~cons_1~v1126:0, v1010:0, v1011:0, v1007:0) -> f_683(v996:0, v1126:0, v1010:0, v1011:0, 1 + v1126:0) :|: v1126:0 < 1 && v1007:0 < 3 && v1126:0 > -1 && sum~cons_1~v1126:0 = 1 + v1126:0 33.80/10.51 f_683(x, x1, x2, x3, x4) -> f_646(x, x1, 1, x4) :|: x1 > 1 && x4 > 2 && x > 2 && x3 > 3 && x2 > 1 33.80/10.51 f_646(v800:0, v809:0, v811:0, v815:0) -> f_646(v800:0, v809:0, 2 * v811:0, v815:0) :|: v809:0 > 2 && 2 * v811:0 > 1 && v809:0 > 2 * v811:0 && v815:0 > 3 && v800:0 > 3 33.80/10.51 f_646(x5, x6, x7, x8) -> f_683(x5, x9, x7, 2 * x7, 1 + x9) :|: 2 * x7 > 1 && 2 * x7 >= 1 + x9 && x9 > -1 && x6 = 1 + x9 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (10) IRS2T2 (EQUIVALENT) 33.80/10.51 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 33.80/10.51 33.80/10.51 (f_683_5,1) 33.80/10.51 (f_646_5,2) 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (11) 33.80/10.51 Obligation: 33.80/10.51 START: 0; 33.80/10.51 33.80/10.51 FROM: 0; 33.80/10.51 TO: 1; 33.80/10.51 33.80/10.51 FROM: 0; 33.80/10.51 TO: 2; 33.80/10.51 33.80/10.51 FROM: 1; 33.80/10.51 oldX0 := x0; 33.80/10.51 oldX1 := x1; 33.80/10.51 oldX2 := x2; 33.80/10.51 oldX3 := x3; 33.80/10.51 oldX4 := x4; 33.80/10.51 oldX5 := oldX1 - 1; 33.80/10.51 assume(oldX5 < 1 && oldX4 < 3 && oldX5 > -1 && oldX1 = 1 + oldX5); 33.80/10.51 x0 := oldX0; 33.80/10.51 x1 := oldX1 - 1; 33.80/10.51 x2 := oldX2; 33.80/10.51 x3 := oldX3; 33.80/10.51 x4 := 1 + oldX5; 33.80/10.51 TO: 1; 33.80/10.51 33.80/10.51 FROM: 1; 33.80/10.51 oldX0 := x0; 33.80/10.51 oldX1 := x1; 33.80/10.51 oldX2 := x2; 33.80/10.51 oldX3 := x3; 33.80/10.51 oldX4 := x4; 33.80/10.51 oldX5 := nondet(); 33.80/10.51 assume(oldX1 > 1 && oldX4 > 2 && oldX0 > 2 && oldX3 > 3 && oldX2 > 1); 33.80/10.51 x0 := oldX0; 33.80/10.51 x1 := oldX1; 33.80/10.51 x2 := 1; 33.80/10.51 x3 := oldX4; 33.80/10.51 x4 := oldX5; 33.80/10.51 TO: 2; 33.80/10.51 33.80/10.51 FROM: 2; 33.80/10.51 oldX0 := x0; 33.80/10.51 oldX1 := x1; 33.80/10.51 oldX2 := x2; 33.80/10.51 oldX3 := x3; 33.80/10.51 oldX4 := x4; 33.80/10.51 oldX5 := nondet(); 33.80/10.51 assume(oldX1 > 2 && 2 * oldX2 > 1 && oldX1 > 2 * oldX2 && oldX3 > 3 && oldX0 > 3); 33.80/10.51 x0 := oldX0; 33.80/10.51 x1 := oldX1; 33.80/10.51 x2 := 2 * oldX2; 33.80/10.51 x3 := oldX3; 33.80/10.51 x4 := oldX5; 33.80/10.51 TO: 2; 33.80/10.51 33.80/10.51 FROM: 2; 33.80/10.51 oldX0 := x0; 33.80/10.51 oldX1 := x1; 33.80/10.51 oldX2 := x2; 33.80/10.51 oldX3 := x3; 33.80/10.51 oldX4 := x4; 33.80/10.51 oldX5 := oldX1 - 1; 33.80/10.51 assume(2 * oldX2 > 1 && 2 * oldX2 >= 1 + oldX5 && oldX5 > -1 && oldX1 = 1 + oldX5); 33.80/10.51 x0 := oldX0; 33.80/10.51 x1 := oldX1 - 1; 33.80/10.51 x2 := oldX2; 33.80/10.51 x3 := 2 * oldX2; 33.80/10.51 x4 := 1 + oldX5; 33.80/10.51 TO: 1; 33.80/10.51 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (12) T2 (EQUIVALENT) 33.80/10.51 Initially, performed program simplifications using lexicographic rank functions: 33.80/10.51 * Removed transitions 2, 5, 6, 14, 17, 18 using the following rank functions: 33.80/10.51 - Rank function 1: 33.80/10.51 RF for loc. 6: 2+3*x1 33.80/10.51 RF for loc. 7: 3*x1 33.80/10.51 RF for loc. 8: 1+3*x1 33.80/10.51 RF for loc. 12: 3*x1 33.80/10.51 Bound for (chained) transitions 6: 7 33.80/10.51 Bound for (chained) transitions 18: 3 33.80/10.51 - Rank function 2: 33.80/10.51 RF for loc. 6: x1 33.80/10.51 RF for loc. 7: 1+x1-2*x2 33.80/10.51 RF for loc. 8: -1+x1 33.80/10.51 RF for loc. 12: x1-2*x2 33.80/10.51 Bound for (chained) transitions 17: 1 33.80/10.51 - Rank function 3: 33.80/10.51 RF for loc. 6: 2*x1 33.80/10.51 RF for loc. 7: 1 33.80/10.51 RF for loc. 8: -1+2*x1 33.80/10.51 RF for loc. 12: 0 33.80/10.51 Bound for (chained) transitions 5: 1 33.80/10.51 Bound for (chained) transitions 14: 1 33.80/10.51 - Rank function 4: 33.80/10.51 RF for loc. 6: 0 33.80/10.51 RF for loc. 8: -1 33.80/10.51 Bound for (chained) transitions 2: 0 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (13) 33.80/10.51 YES 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (14) 33.80/10.51 Obligation: 33.80/10.51 SCC 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (15) SCC2IRS (SOUND) 33.80/10.51 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 33.80/10.51 Generated rules. Obtained 18 rulesP rules: 33.80/10.51 f_447(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_448(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_448(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_449(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_449(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_450(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_450(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_451(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: v207 < v195 && 3 <= v195 33.80/10.51 f_451(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_453(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_453(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_455(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_455(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_457(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_457(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, v205, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_459(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_459(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_461(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_461(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_463(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_463(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_465(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_465(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v205, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_467(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_467(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_469(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: v219 = 2 * v207 && 4 <= v219 33.80/10.51 f_469(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_471(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 f_471(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_473(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_473(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_475(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_475(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_446(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v207, 0, v219, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: TRUE 33.80/10.51 f_446(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) -> f_447(v195, v196, v197, v198, v199, v200, v201, v202, v203, 1, v205, 0, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, 3, 7, 2, 4, 8) :|: 0 = 0 33.80/10.51 Combined rules. Obtained 1 rulesP rules: 33.80/10.51 f_447(v195:0, v196:0, v197:0, v198:0, v199:0, v200:0, v201:0, v202:0, v203:0, 1, v205:0, 0, v207:0, v208:0, v209:0, v210:0, v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 3, 7, 2, 4, 8) -> f_447(v195:0, v196:0, v197:0, v198:0, v199:0, v200:0, v201:0, v202:0, v203:0, 1, v207:0, 0, 2 * v207:0, v208:0, v209:0, v210:0, v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 3, 7, 2, 4, 8) :|: v195:0 > 2 && 3 < 2 * v207:0 && v207:0 < v195:0 33.80/10.51 Filtered unneeded arguments: 33.80/10.51 f_447(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) -> f_447(x1, x13) 33.80/10.51 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 33.80/10.51 f_447(v195:0, v207:0) -> f_447(v195:0, 2 * v207:0) :|: 3 < 2 * v207:0 && v207:0 < v195:0 && v195:0 > 2 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (16) 33.80/10.51 Obligation: 33.80/10.51 Rules: 33.80/10.51 f_447(v195:0, v207:0) -> f_447(v195:0, 2 * v207:0) :|: 3 < 2 * v207:0 && v207:0 < v195:0 && v195:0 > 2 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (17) IntTRSCompressionProof (EQUIVALENT) 33.80/10.51 Compressed rules. 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (18) 33.80/10.51 Obligation: 33.80/10.51 Rules: 33.80/10.51 f_447(v195:0:0, v207:0:0) -> f_447(v195:0:0, 2 * v207:0:0) :|: 3 < 2 * v207:0:0 && v207:0:0 < v195:0:0 && v195:0:0 > 2 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (19) PolynomialOrderProcessor (EQUIVALENT) 33.80/10.51 Found the following polynomial interpretation: 33.80/10.51 [f_447(x, x1)] = -1 + x - x1 33.80/10.51 33.80/10.51 The following rules are decreasing: 33.80/10.51 f_447(v195:0:0, v207:0:0) -> f_447(v195:0:0, 2 * v207:0:0) :|: 3 < 2 * v207:0:0 && v207:0:0 < v195:0:0 && v195:0:0 > 2 33.80/10.51 The following rules are bounded: 33.80/10.51 f_447(v195:0:0, v207:0:0) -> f_447(v195:0:0, 2 * v207:0:0) :|: 3 < 2 * v207:0:0 && v207:0:0 < v195:0:0 && v195:0:0 > 2 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (20) 33.80/10.51 YES 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (21) 33.80/10.51 Obligation: 33.80/10.51 SCC 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (22) SCC2IRS (SOUND) 33.80/10.51 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 33.80/10.51 Generated rules. Obtained 21 rulesP rules: 33.80/10.51 f_328(v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1, 0, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_330(v28, v29, v30, v31, v32, v33, v34, v35, v36, v40, 1, v37, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_330(v28, v29, v30, v31, v32, v33, v34, v35, v36, v40, 1, v37, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_332(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 <= v40 && v37 = 1 && v40 = 0 && 0 = 0 33.80/10.51 f_332(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_335(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_335(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_338(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_338(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_342(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_342(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_346(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_346(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_350(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_350(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_354(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_354(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_358(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_358(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_362(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_362(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_366(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_366(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_369(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_369(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_372(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_372(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_375(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_375(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_378(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_378(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_381(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_381(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_384(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 f_384(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_386(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_386(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_388(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_388(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_325(1, v29, v30, v31, v32, v33, v34, v35, v36, 0, 1, 0, -1, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: TRUE 33.80/10.51 f_325(v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1, 0, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) -> f_328(v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1, 0, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, 3, 7, 4, 8) :|: 0 = 0 33.80/10.51 Combined rules. Obtained 1 rulesP rules: 33.80/10.51 f_328(v28:0, v29:0, v30:0, v31:0, v32:0, v33:0, v34:0, v35:0, v36:0, 1, 1, 0, 0, v41:0, v42:0, v43:0, v44:0, v45:0, v46:0, v47:0, v48:0, v49:0, 3, 7, 4, 8) -> f_328(1, v29:0, v30:0, v31:0, v32:0, v33:0, v34:0, v35:0, v36:0, 0, 1, 0, -1, v41:0, v42:0, v43:0, v44:0, v45:0, v46:0, v47:0, v48:0, v49:0, 3, 7, 4, 8) :|: TRUE 33.80/10.51 Filtered unneeded arguments: 33.80/10.51 f_328(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_328(x10, x13) 33.80/10.51 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 33.80/10.51 f_328(cons_1, cons_0) -> f_328(0, -1) :|: TRUE && cons_1 = 1 && cons_0 = 0 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (23) 33.80/10.51 Obligation: 33.80/10.51 Rules: 33.80/10.51 f_328(cons_1, cons_0) -> f_328(0, -1) :|: TRUE && cons_1 = 1 && cons_0 = 0 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (24) TerminationGraphProcessor (EQUIVALENT) 33.80/10.51 Constructed the termination graph and obtained no non-trivial SCC(s). 33.80/10.51 33.80/10.51 ---------------------------------------- 33.80/10.51 33.80/10.51 (25) 33.80/10.51 YES 33.80/10.58 EOF