/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 179 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 5002 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 131 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 912 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 83 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 23 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 49 ms] (23) IntTRS (24) TerminationGraphProcessor [EQUIVALENT, 17 ms] (25) 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) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 %x_ref = alloca *i32, align 8 %y_ref = alloca *i32, align 8 store %x, %2 store %y, %3 %4 = alloca i8, numElementsLit: 4 %5 = bitcast *i8 %4 to *i32 store %5, %x_ref %6 = alloca i8, numElementsLit: 4 %7 = bitcast *i8 %6 to *i32 store %7, %y_ref %8 = load %2 %9 = load %x_ref store %8, %9 %10 = load %3 %11 = load %y_ref store %10, %11 br %12 12: %13 = load %x_ref %14 = load %13 %15 = icmp sge %14 0 br %15, %16, %41 16: %17 = load %y_ref store 1, %17 br %18 18: %19 = load %x_ref %20 = load %19 %21 = load %y_ref %22 = load %21 %23 = icmp sgt %20 %22 br %23, %24, %36 24: %25 = load %y_ref %26 = load %25 %27 = icmp sle %26 0 br %27, %28, %31 28: %29 = load %x_ref %30 = load %29 store %30, %1 br %44 31: %32 = load %y_ref %33 = load %32 %34 = mul 2 %33 %35 = load %y_ref store %34, %35 br %18 36: %37 = load %x_ref %38 = load %37 %39 = sub %38 1 %40 = load %x_ref store %39, %40 br %12 41: %42 = load %y_ref %43 = load %42 store %43, %1 br %44 44: %45 = load %1 ret %45 *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 @test_fun(i32 %2, i32 %3) ret %4 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 49 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 4 rulesP rules: 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 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 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 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 Filtered unneeded arguments: 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) 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) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 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 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 ---------------------------------------- (9) Obligation: Rules: 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 f_683(x, x1, x2, x3, x4) -> f_646(x, x1, 1, x4) :|: x1 > 1 && x4 > 2 && x > 2 && x3 > 3 && x2 > 1 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 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 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_683_5,1) (f_646_5,2) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; assume(oldX5 < 1 && oldX4 < 3 && oldX5 > -1 && oldX1 = 1 + oldX5); x0 := oldX0; x1 := oldX1 - 1; x2 := oldX2; x3 := oldX3; x4 := 1 + oldX5; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); assume(oldX1 > 1 && oldX4 > 2 && oldX0 > 2 && oldX3 > 3 && oldX2 > 1); x0 := oldX0; x1 := oldX1; x2 := 1; x3 := oldX4; x4 := oldX5; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); assume(oldX1 > 2 && 2 * oldX2 > 1 && oldX1 > 2 * oldX2 && oldX3 > 3 && oldX0 > 3); x0 := oldX0; x1 := oldX1; x2 := 2 * oldX2; x3 := oldX3; x4 := oldX5; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; assume(2 * oldX2 > 1 && 2 * oldX2 >= 1 + oldX5 && oldX5 > -1 && oldX1 = 1 + oldX5); x0 := oldX0; x1 := oldX1 - 1; x2 := oldX2; x3 := 2 * oldX2; x4 := 1 + oldX5; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 14, 17, 18 using the following rank functions: - Rank function 1: RF for loc. 6: 2+3*x1 RF for loc. 7: 3*x1 RF for loc. 8: 1+3*x1 RF for loc. 12: 3*x1 Bound for (chained) transitions 6: 7 Bound for (chained) transitions 18: 3 - Rank function 2: RF for loc. 6: x1 RF for loc. 7: 1+x1-2*x2 RF for loc. 8: -1+x1 RF for loc. 12: x1-2*x2 Bound for (chained) transitions 17: 1 - Rank function 3: RF for loc. 6: 2*x1 RF for loc. 7: 1 RF for loc. 8: -1+2*x1 RF for loc. 12: 0 Bound for (chained) transitions 5: 1 Bound for (chained) transitions 14: 1 - Rank function 4: RF for loc. 6: 0 RF for loc. 8: -1 Bound for (chained) transitions 2: 0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 1 rulesP rules: 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_447(v195:0, v207:0) -> f_447(v195:0, 2 * v207:0) :|: 3 < 2 * v207:0 && v207:0 < v195:0 && v195:0 > 2 ---------------------------------------- (16) Obligation: Rules: f_447(v195:0, v207:0) -> f_447(v195:0, 2 * v207:0) :|: 3 < 2 * v207:0 && v207:0 < v195:0 && v195:0 > 2 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: 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 ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_447 ] = -1/2*f_447_2 + 1/2*f_447_1 The following rules are decreasing: 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 The following rules are bounded: 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 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 21 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 1 rulesP rules: 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_328(cons_1, cons_0) -> f_328(0, -1) :|: TRUE && cons_1 = 1 && cons_0 = 0 ---------------------------------------- (23) Obligation: Rules: f_328(cons_1, cons_0) -> f_328(0, -1) :|: TRUE && cons_1 = 1 && cons_0 = 0 ---------------------------------------- (24) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained no non-trivial SCC(s). ---------------------------------------- (25) YES