/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/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, 27.4 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 61 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 855 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 114 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 513 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 73 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [EQUIVALENT, 822 ms] (27) YES (28) LLVM Symbolic Execution SCC (29) SCC2IRS [SOUND, 29 ms] (30) IntTRS (31) IRS2T2 [EQUIVALENT, 0 ms] (32) T2IntSys (33) T2 [EQUIVALENT, 492 ms] (34) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/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: "cstrncpy" linkageType: EXTERNALLY_VISIBLE returnParam: *i8 parameters: (dst *i8, src *i8, n i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i8, align 8 %2 = alloca *i8, align 8 %3 = alloca i64, align 8 %d = alloca *i8, align 8 %s = alloca *i8, align 8 store %dst, %1 store %src, %2 store %n, %3 %4 = load %3 %5 = icmp ne %4 0 br %5, %6, %32 6: %7 = load %1 store %7, %d %8 = load %2 store %8, %s br %9 9: %10 = load %s %11 = getelementptr %10, 1 store %11, %s %12 = load %10 %13 = load %d %14 = getelementptr %13, 1 store %14, %d store %12, %13 %15 = sext i8 %12 to i32 %16 = icmp eq %15 0 br %16, %17, %26 17: br %18 18: %19 = load %3 %20 = add %19 -1 store %20, %3 %21 = icmp ne %20 0 br %21, %22, %25 22: %23 = load %d %24 = getelementptr %23, 1 store %24, %d store 0, %23 br %18 25: br %31 26: br %27 27: %28 = load %3 %29 = add %28 -1 store %29, %3 %30 = icmp ne %29 0 br %30, %9, %31 31: br %32 32: %33 = load %1 ret %33 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %length = alloca i32, align 4 %n = alloca i32, align 4 %nondetArea = alloca *i8, align 8 %nondetString = alloca *i8, align 8 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %length %3 = call i32 @__VERIFIER_nondet_int() store %3, %n %4 = load %length %5 = icmp slt %4 1 br %5, %6, %7 6: store 1, %length br %7 7: %8 = load %n %9 = icmp slt %8 1 br %9, %10, %11 10: store 1, %n br %11 11: %12 = load %n %13 = sext i32 %12 to i64 %14 = mul %13 1 %15 = alloca i8, numElementsLit: %14 store %15, %nondetArea %16 = load %length %17 = sext i32 %16 to i64 %18 = mul %17 1 %19 = alloca i8, numElementsLit: %18 store %19, %nondetString %20 = load %length %21 = sub %20 1 %22 = sext i32 %21 to i64 %23 = load %nondetString %24 = getelementptr %23, %22 store 0, %24 %25 = load %nondetArea %26 = load %nondetString %27 = load %n %28 = sext i32 %27 to i64 %29 = call *i8 @cstrncpy(*i8 %25, *i8 %26, i64 %28) ret 0 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 4 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 12 rulesP rules: f_947(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_948(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: 1 + v4849 = v4804 && 0 <= v4849 f_948(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_949(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: TRUE f_949(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_950(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: v4849 != 0 && 2 <= v4804 && 4 <= v4801 && 3 <= v4802 && 4 <= v4820 f_950(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_952(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: 0 = 0 f_952(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_954(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: TRUE f_954(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_956(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8) :|: 0 = 0 f_956(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8) -> f_958(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) :|: v5050 = 1 + v4806 && 5 <= v5050 f_958(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) -> f_960(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) :|: TRUE f_960(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) -> f_962(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) :|: TRUE f_962(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) -> f_964(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) :|: TRUE f_964(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4805, v4812, v4813, 3, 7, 2, 4, 8, 5) -> f_946(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4849, v4806, v5050, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: TRUE f_946(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4803, v4804, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) -> f_947(v4787, v4788, v4789, v4790, v4791, v4792, v4793, v4794, 1, v4796, v4797, 0, v4799, v4800, v4801, v4802, v4804, v4805, v4806, v4807, v4815, v4808, v4816, v4809, v4817, v4810, v4818, v4811, v4819, v4820, v4814, v4821, v4822, v4823, v4824, v4825, v4830, v4829, v4831, v4828, v4826, v4832, v4827, v4812, v4813, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_947(v4787:0, v4788:0, v4789:0, v4790:0, v4791:0, v4792:0, v4793:0, v4794:0, 1, v4796:0, v4797:0, 0, v4799:0, v4800:0, v4801:0, v4802:0, 1 + v4849:0, v4805:0, v4806:0, v4807:0, v4815:0, v4808:0, v4816:0, v4809:0, v4817:0, v4810:0, v4818:0, v4811:0, v4819:0, v4820:0, v4814:0, v4821:0, v4822:0, v4823:0, v4824:0, v4825:0, v4830:0, v4829:0, v4831:0, v4828:0, v4826:0, v4832:0, v4827:0, v4812:0, v4813:0, 3, 7, 2, 4, 8) -> f_947(v4787:0, v4788:0, v4789:0, v4790:0, v4791:0, v4792:0, v4793:0, v4794:0, 1, v4796:0, v4797:0, 0, v4799:0, v4800:0, v4801:0, v4802:0, v4849:0, v4806:0, 1 + v4806:0, v4807:0, v4815:0, v4808:0, v4816:0, v4809:0, v4817:0, v4810:0, v4818:0, v4811:0, v4819:0, v4820:0, v4814:0, v4821:0, v4822:0, v4823:0, v4824:0, v4825:0, v4830:0, v4829:0, v4831:0, v4828:0, v4826:0, v4832:0, v4827:0, v4812:0, v4813:0, 3, 7, 2, 4, 8) :|: v4849:0 > 0 && v4801:0 > 3 && v4802:0 > 2 && v4806:0 > 3 && v4820:0 > 3 Filtered unneeded arguments: f_947(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, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50) -> f_947(x15, x16, x17, x19, x30) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_947(v4801:0, v4802:0, sum~cons_1~v4849:0, v4806:0, v4820:0) -> f_947(v4801:0, v4802:0, v4849:0, 1 + v4806:0, v4820:0) :|: v4801:0 > 3 && v4849:0 > 0 && v4802:0 > 2 && v4820:0 > 3 && v4806:0 > 3 && sum~cons_1~v4849:0 = 1 + v4849:0 ---------------------------------------- (9) Obligation: Rules: f_947(v4801:0, v4802:0, sum~cons_1~v4849:0, v4806:0, v4820:0) -> f_947(v4801:0, v4802:0, v4849:0, 1 + v4806:0, v4820:0) :|: v4801:0 > 3 && v4849:0 > 0 && v4802:0 > 2 && v4820:0 > 3 && v4806:0 > 3 && sum~cons_1~v4849:0 = 1 + v4849:0 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_947_5,1) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX2 - 1; assume(oldX0 > 3 && oldX5 > 0 && oldX1 > 2 && oldX4 > 3 && oldX3 > 3 && oldX2 = 1 + oldX5); x0 := oldX0; x1 := oldX1; x2 := oldX2 - 1; x3 := 1 + oldX3; x4 := oldX4; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: x2 RF for loc. 6: x2 Bound for (chained) transitions 3: 2 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 20 rulesP rules: f_899(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_900(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: v4102 = 1 + v4072 && 4 <= v4102 f_900(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_901(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_901(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_902(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4074, v4075, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_902(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4074, v4075, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_903(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 0 = 0 f_903(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_904(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: v4106 = 1 + v4075 && 4 <= v4106 f_904(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_905(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_905(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_906(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_906(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, v4073, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_907(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 0 = 0 f_907(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_909(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: v4104 != 0 && v4072 < v4086 && 4 <= v4086 f_909(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_911(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 0 = 0 f_911(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_913(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_913(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_915(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_915(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_917(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 0 = 0 f_917(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_919(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 1 + v4248 = v4078 && 0 <= v4248 f_919(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_921(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_921(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_924(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: v4248 != 0 && 2 <= v4078 && 4 <= v4092 f_924(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_928(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 0 = 0 f_928(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_932(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_932(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4073, v4074, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_898(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4102, v4104, v4075, v4106, 0, v4078, v4248, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: TRUE f_898(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4071, v4072, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) -> f_899(v4062, v4063, v4064, v4065, v4066, v4067, v4068, v4069, 1, v4072, v4073, v4074, v4075, 0, v4077, v4078, v4079, v4087, v4080, v4088, v4081, v4089, v4082, v4090, v4083, v4091, v4092, v4086, v4093, v4094, v4095, v4096, v4097, v4100, v4071, v4084, v4098, v4101, v4099, v4085, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 2 rulesP rules: f_899(v4062:0, v4063:0, v4064:0, v4065:0, v4066:0, v4067:0, v4068:0, v4069:0, 1, v4072:0, v4073:0, v4074:0, v4075:0, 0, v4077:0, 1 + v4248:0, v4079:0, v4087:0, v4080:0, v4088:0, v4081:0, v4089:0, v4082:0, v4090:0, v4083:0, v4091:0, v4092:0, v4086:0, v4093:0, v4094:0, v4095:0, v4096:0, v4097:0, v4100:0, v4071:0, v4084:0, v4098:0, v4101:0, v4099:0, v4085:0, 3, 7, 2, 4, 8) -> f_899(v4062:0, v4063:0, v4064:0, v4065:0, v4066:0, v4067:0, v4068:0, v4069:0, 1, 1 + v4072:0, v4104:0, v4075:0, 1 + v4075:0, 0, 1 + v4248:0, v4248:0, v4079:0, v4087:0, v4080:0, v4088:0, v4081:0, v4089:0, v4082:0, v4090:0, v4083:0, v4091:0, v4092:0, v4086:0, v4093:0, v4094:0, v4095:0, v4096:0, v4097:0, v4100:0, v4072:0, v4084:0, v4098:0, v4101:0, v4099:0, v4085:0, 3, 7, 2, 4, 8) :|: v4248:0 > 0 && v4072:0 > 2 && v4075:0 > 2 && v4086:0 > v4072:0 && v4104:0 < 0 && v4086:0 > 3 && v4092:0 > 3 f_899(v4062:0, v4063:0, v4064:0, v4065:0, v4066:0, v4067:0, v4068:0, v4069:0, 1, v4072:0, v4073:0, v4074:0, v4075:0, 0, v4077:0, 1 + v4248:0, v4079:0, v4087:0, v4080:0, v4088:0, v4081:0, v4089:0, v4082:0, v4090:0, v4083:0, v4091:0, v4092:0, v4086:0, v4093:0, v4094:0, v4095:0, v4096:0, v4097:0, v4100:0, v4071:0, v4084:0, v4098:0, v4101:0, v4099:0, v4085:0, 3, 7, 2, 4, 8) -> f_899(v4062:0, v4063:0, v4064:0, v4065:0, v4066:0, v4067:0, v4068:0, v4069:0, 1, 1 + v4072:0, v4104:0, v4075:0, 1 + v4075:0, 0, 1 + v4248:0, v4248:0, v4079:0, v4087:0, v4080:0, v4088:0, v4081:0, v4089:0, v4082:0, v4090:0, v4083:0, v4091:0, v4092:0, v4086:0, v4093:0, v4094:0, v4095:0, v4096:0, v4097:0, v4100:0, v4072:0, v4084:0, v4098:0, v4101:0, v4099:0, v4085:0, 3, 7, 2, 4, 8) :|: v4248:0 > 0 && v4072:0 > 2 && v4075:0 > 2 && v4086:0 > v4072:0 && v4104:0 > 0 && v4086:0 > 3 && v4092:0 > 3 Filtered unneeded arguments: f_899(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, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45) -> f_899(x10, x13, x16, x27, x28) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_899(v4072:0, v4075:0, sum~cons_1~v4248:0, v4092:0, v4086:0) -> f_899(1 + v4072:0, 1 + v4075:0, v4248:0, v4092:0, v4086:0) :|: v4072:0 > 2 && v4248:0 > 0 && v4075:0 > 2 && v4086:0 > v4072:0 && v4092:0 > 3 && v4086:0 > 3 && sum~cons_1~v4248:0 = 1 + v4248:0 ---------------------------------------- (16) Obligation: Rules: f_899(v4072:0, v4075:0, sum~cons_1~v4248:0, v4092:0, v4086:0) -> f_899(1 + v4072:0, 1 + v4075:0, v4248:0, v4092:0, v4086:0) :|: v4072:0 > 2 && v4248:0 > 0 && v4075:0 > 2 && v4086:0 > v4072:0 && v4092:0 > 3 && v4086:0 > 3 && sum~cons_1~v4248:0 = 1 + v4248:0 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_899_5,1) ---------------------------------------- (18) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX2 - 1; assume(oldX0 > 2 && oldX5 > 0 && oldX1 > 2 && oldX4 > oldX0 && oldX3 > 3 && oldX4 > 3 && oldX2 = 1 + oldX5); x0 := 1 + oldX0; x1 := 1 + oldX1; x2 := oldX2 - 1; x3 := oldX3; x4 := oldX4; TO: 1; ---------------------------------------- (19) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1-x0+x2+x4 RF for loc. 6: -x0+x2+x4 Bound for (chained) transitions 3: 3 - Rank function 2: RF for loc. 5: 2*x2 RF for loc. 6: -1+2*x2 Bound for (chained) transitions 4: 3 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 12 rulesP rules: f_812(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_816(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: 1 + v2805 = v2407 && 0 <= v2805 f_816(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_820(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: TRUE f_820(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_824(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: v2805 != 0 && 2 <= v2407 && 4 <= v2423 f_824(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_829(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: 0 = 0 f_829(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_834(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: TRUE f_834(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_839(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: 0 = 0 f_839(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_844(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) :|: v3061 = 1 + v2409 && 5 <= v3061 f_844(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) -> f_849(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) :|: TRUE f_849(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) -> f_853(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) :|: TRUE f_853(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) -> f_858(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) :|: TRUE f_858(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2408, v2415, v2429, v2416, 3, 7, 2, 4, 8, 5) -> f_805(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2805, v2409, v3061, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: TRUE f_805(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2406, v2407, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) -> f_812(v2394, v2395, v2396, v2397, v2398, v2399, v2400, v2401, 1, v2403, 0, v2405, v2407, v2408, v2409, v2410, v2418, v2411, v2419, v2412, v2420, v2413, v2421, v2414, v2422, v2423, v2417, v2424, v2425, v2426, v2427, v2428, v2415, v2429, v2416, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_812(v2394:0, v2395:0, v2396:0, v2397:0, v2398:0, v2399:0, v2400:0, v2401:0, 1, v2403:0, 0, v2405:0, 1 + v2805:0, v2408:0, v2409:0, v2410:0, v2418:0, v2411:0, v2419:0, v2412:0, v2420:0, v2413:0, v2421:0, v2414:0, v2422:0, v2423:0, v2417:0, v2424:0, v2425:0, v2426:0, v2427:0, v2428:0, v2415:0, v2429:0, v2416:0, 3, 7, 2, 4, 8) -> f_812(v2394:0, v2395:0, v2396:0, v2397:0, v2398:0, v2399:0, v2400:0, v2401:0, 1, v2403:0, 0, v2405:0, v2805:0, v2409:0, 1 + v2409:0, v2410:0, v2418:0, v2411:0, v2419:0, v2412:0, v2420:0, v2413:0, v2421:0, v2414:0, v2422:0, v2423:0, v2417:0, v2424:0, v2425:0, v2426:0, v2427:0, v2428:0, v2415:0, v2429:0, v2416:0, 3, 7, 2, 4, 8) :|: v2805:0 > 0 && v2409:0 > 3 && v2423:0 > 3 Filtered unneeded arguments: f_812(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, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40) -> f_812(x13, x15, x26) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_812(sum~cons_1~v2805:0, v2409:0, v2423:0) -> f_812(v2805:0, 1 + v2409:0, v2423:0) :|: v2409:0 > 3 && v2423:0 > 3 && v2805:0 > 0 && sum~cons_1~v2805:0 = 1 + v2805:0 ---------------------------------------- (23) Obligation: Rules: f_812(sum~cons_1~v2805:0, v2409:0, v2423:0) -> f_812(v2805:0, 1 + v2409:0, v2423:0) :|: v2409:0 > 3 && v2423:0 > 3 && v2805:0 > 0 && sum~cons_1~v2805:0 = 1 + v2805:0 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_812_3,1) ---------------------------------------- (25) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX0 - 1; assume(oldX1 > 3 && oldX2 > 3 && oldX3 > 0 && oldX0 = 1 + oldX3); x0 := oldX0 - 1; x1 := 1 + oldX1; x2 := oldX2; TO: 1; ---------------------------------------- (26) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x0 RF for loc. 6: 2*x0 Bound for (chained) transitions 4: 4 - Rank function 2: RF for loc. 5: 1+2*x0 RF for loc. 6: 2*x0 Bound for (chained) transitions 3: 4 - Rank function 3: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 1: 1 ---------------------------------------- (27) YES ---------------------------------------- (28) Obligation: SCC ---------------------------------------- (29) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 12 rulesP rules: f_733(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_739(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: 1 + v1724 = v1665 && 0 <= v1724 f_739(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_745(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: TRUE f_745(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_752(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: v1724 != 0 && 2 <= v1665 && 3 <= v1679 && 3 <= v1654 f_752(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_760(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: 0 = 0 f_760(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_768(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: TRUE f_768(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_776(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) :|: 0 = 0 f_776(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) -> f_784(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) :|: v2285 = 1 + v1667 && 4 <= v2285 f_784(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) -> f_793(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) :|: TRUE f_793(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) -> f_802(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) :|: TRUE f_802(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) -> f_811(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) :|: TRUE f_811(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1666, v1673, 3, 7, 2, 4, 8) -> f_728(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1724, v1667, v2285, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: TRUE f_728(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1664, v1665, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) -> f_733(v1652, v1653, v1654, v1655, v1656, v1657, v1658, v1659, 1, v1661, 0, v1663, v1665, v1666, v1667, v1668, v1674, v1669, v1675, v1670, v1676, v1671, v1677, v1672, v1678, v1679, v1680, v1681, v1682, v1683, v1684, v1673, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_733(v1652:0, v1653:0, v1654:0, v1655:0, v1656:0, v1657:0, v1658:0, v1659:0, 1, v1661:0, 0, v1663:0, 1 + v1724:0, v1666:0, v1667:0, v1668:0, v1674:0, v1669:0, v1675:0, v1670:0, v1676:0, v1671:0, v1677:0, v1672:0, v1678:0, v1679:0, v1680:0, v1681:0, v1682:0, v1683:0, v1684:0, v1673:0, 3, 7, 2, 4, 8) -> f_733(v1652:0, v1653:0, v1654:0, v1655:0, v1656:0, v1657:0, v1658:0, v1659:0, 1, v1661:0, 0, v1663:0, v1724:0, v1667:0, 1 + v1667:0, v1668:0, v1674:0, v1669:0, v1675:0, v1670:0, v1676:0, v1671:0, v1677:0, v1672:0, v1678:0, v1679:0, v1680:0, v1681:0, v1682:0, v1683:0, v1684:0, v1673:0, 3, 7, 2, 4, 8) :|: v1724:0 > 0 && v1679:0 > 2 && v1667:0 > 2 && v1654:0 > 2 Filtered unneeded arguments: f_733(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, x31, x32, x33, x34, x35, x36, x37) -> f_733(x3, x13, x15, x26) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_733(v1654:0, sum~cons_1~v1724:0, v1667:0, v1679:0) -> f_733(v1654:0, v1724:0, 1 + v1667:0, v1679:0) :|: v1679:0 > 2 && v1724:0 > 0 && v1654:0 > 2 && v1667:0 > 2 && sum~cons_1~v1724:0 = 1 + v1724:0 ---------------------------------------- (30) Obligation: Rules: f_733(v1654:0, sum~cons_1~v1724:0, v1667:0, v1679:0) -> f_733(v1654:0, v1724:0, 1 + v1667:0, v1679:0) :|: v1679:0 > 2 && v1724:0 > 0 && v1654:0 > 2 && v1667:0 > 2 && sum~cons_1~v1724:0 = 1 + v1724:0 ---------------------------------------- (31) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_733_4,1) ---------------------------------------- (32) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX1 - 1; assume(oldX3 > 2 && oldX4 > 0 && oldX0 > 2 && oldX2 > 2 && oldX1 = 1 + oldX4); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX2; x3 := oldX3; TO: 1; ---------------------------------------- (33) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1 RF for loc. 6: 2*x1 Bound for (chained) transitions 3: 4 Bound for (chained) transitions 4: 4 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (34) YES