/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, 178 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 23.7 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 195 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 1063 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 103 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 712 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 88 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [EQUIVALENT, 765 ms] (27) 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: "test_fun" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (a *i32, N i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *i32, align 8 %2 = alloca i32, align 4 %i = alloca i32, align 4 %res = alloca i32, align 4 store %a, %1 store %N, %2 store 0, %res store 0, %i br %3 3: %4 = load %i %5 = load %2 %6 = icmp slt %4 %5 br %6, %7, %28 7: br %8 8: %9 = load %i %10 = sext i32 %9 to i64 %11 = load %1 %12 = getelementptr %11, %10 %13 = load %12 %14 = icmp sgt %13 0 br %14, %15, %24 15: %16 = load %i %17 = sext i32 %16 to i64 %18 = load %1 %19 = getelementptr %18, %17 %20 = load %19 %21 = add %20 -1 store %21, %19 %22 = load %res %23 = add %22 1 store %23, %res br %8 24: br %25 25: %26 = load %i %27 = add %26 1 store %27, %i br %3 28: %29 = load %res ret %29 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %array_size = alloca i32, align 4 %numbers = alloca *i32, align 8 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %array_size %3 = load %array_size %4 = icmp slt %3 1 br %4, %5, %6 5: store 1, %array_size br %6 6: %7 = load %array_size %8 = sext i32 %7 to i64 %9 = mul %8 4 %10 = alloca i8, numElementsLit: %9 %11 = bitcast *i8 %10 to *i32 store %11, %numbers %12 = load %numbers %13 = load %array_size %14 = call i32 @test_fun(*i32 %12, i32 %13) %15 = load %1 ret %15 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 55 rulesP rules: f_1082(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2471, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) -> f_1086(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2471, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) :|: 0 = 0 f_1086(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2471, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) -> f_1090(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) :|: 0 = 0 f_1090(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) -> f_1093(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) :|: 0 = 0 f_1093(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) -> f_1095(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2473, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: v2606 = v2463 + 4 * v2469 && 5 <= v2606 f_1095(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2473, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1097(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: TRUE f_1097(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1100(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: 0 < v2607 f_1097(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1101(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: v2607 <= 0 f_1100(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1104(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, v2475, v2476, 0, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_1104(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, v2475, v2476, 0, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1108(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, v2475, v2476, 0, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: TRUE f_1108(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, v2475, v2476, 0, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1174(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, v2475, v2476, 1, 0, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: TRUE f_1174(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3259, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1176(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3259, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1176(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3259, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1178(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1178(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1180(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1180(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3260, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1182(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, v3260, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: v3257 = v3249 + 4 * v3255 f_1182(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3261, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, v3260, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1184(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, v3260, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1184(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3262, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, v3260, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1186(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, v3260, v3262, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: 1 + v3458 = v3258 && 0 <= v3458 f_1186(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, v3260, v3262, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1187(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: TRUE f_1187(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3263, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1188(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1188(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1189(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3460, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: v3460 = 1 + v3264 && 2 <= v3460 f_1189(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3460, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1190(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3460, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: TRUE f_1190(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3460, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1191(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3460, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: TRUE f_1191(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3458, v3264, v3460, v3265, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) -> f_1160(v3249, v3250, v3251, v3252, v3253, v3254, v3255, 1, v3257, v3258, v3265, v3458, v3264, v3460, v3266, v3272, v3267, v3273, v3268, v3274, v3275, v3276, v3277, v3278, v3279, v3281, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: TRUE f_1160(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1162(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1162(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1164(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1164(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1166(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1166(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1167(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: v3191 = v3183 + 4 * v3189 f_1167(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3192, v3193, v3194, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1168(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1168(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1169(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 < v3194 && 2 <= v3192 f_1168(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1170(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: v3194 <= 0 && v3192 = 1 && v3194 = 0 && 0 = 0 f_1169(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1171(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1171(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1173(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: TRUE f_1173(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3193, v3192, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1174(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, v3194, v3189, v3191, v3192, v3194, v3195, v3196, v3193, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, 0, v3280, v3283, v3269, v3270, v3271, 3, 7, 4, 2, 5, 8) :|: TRUE f_1170(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1172(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1172(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1175(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: TRUE f_1175(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1177(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: TRUE f_1177(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3193, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1179(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: 0 = 0 f_1179(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1181(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3400, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: v3400 = 1 + v3189 && 2 <= v3400 f_1181(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3400, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1183(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3400, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: TRUE f_1183(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3400, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1185(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3400, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) :|: TRUE f_1185(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, v3400, v3195, v3196, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v3211, v3214, v3200, v3201, v3202, 3, 7, 4, 2, 5, 8) -> f_1130(v3183, v3184, v3185, v3186, v3187, v3188, v3189, 1, v3191, 0, 0, v3189, v3191, v3195, v3196, v3400, v3197, v3203, v3198, v3204, v3199, v3205, v3206, v3207, v3208, v3209, v3210, v3212, v2896, v2897, v2898, 3, 7, 4, 8) :|: TRUE f_1130(v2877, v2878, v2879, v2880, v2881, v2882, v2883, 1, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2892, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 8) -> f_1134(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 8) :|: 0 = 0 f_1134(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 8) -> f_1138(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 8) :|: 0 = 0 f_1138(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 8) -> f_1143(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 2, 8) :|: v2892 < v2878 && 2 <= v2878 && 8 <= v2902 f_1143(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 2, 8) -> f_1149(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 2, 8) :|: 0 = 0 f_1149(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 2, 8) -> f_1155(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 2, 8) :|: TRUE f_1155(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2896, v2897, v2898, 3, 7, 4, 2, 8) -> f_1077(v2877, v2878, v2879, v2880, v2881, v2882, v2892, 1, v2883, v2885, v2886, 0, v2888, v2889, v2890, v2891, v2893, v2899, v2894, v2900, v2895, v2901, v2902, v2903, v2904, v2905, v2906, v2907, v2482, v2483, v2484, 3, 7, 4, 2, 8) :|: TRUE f_1077(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2471, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) -> f_1082(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2471, v2472, v2473, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2482, v2483, v2484, 3, 7, 4, 2, 8) :|: TRUE f_1101(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1105(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_1105(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1109(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: TRUE f_1109(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1113(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: TRUE f_1113(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2471, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1117(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_1117(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1121(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: v2775 = 1 + v2469 && 2 <= v2775 f_1121(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1125(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: TRUE f_1125(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1129(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) :|: TRUE f_1129(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2472, v2473, v2482, v2483, v2484, 3, 7, 4, 2, 8, 5) -> f_1130(v2463, v2464, v2465, v2466, v2467, v2468, v2469, 1, v2606, v2607, 0, v2475, v2476, v2477, v2478, v2775, v2479, v2485, v2480, v2486, v2481, v2487, v2488, v2489, v2490, v2491, v2492, v2493, v2896, v2897, v2898, 3, 7, 4, 8) :|: TRUE Combined rules. Obtained 4 rulesP rules: f_1082(v2463:0, v2464:0, v2465:0, v2466:0, v2467:0, v2468:0, v2469:0, 1, v2471:0, v2472:0, v2473:0, 0, v2475:0, v2476:0, v2477:0, v2478:0, v2479:0, v2485:0, v2480:0, v2486:0, v2481:0, v2487:0, v2488:0, v2489:0, v2490:0, v2491:0, v2492:0, v2493:0, v2482:0, v2483:0, v2484:0, 3, 7, 4, 2, 8) -> f_1082(v2463:0, v2464:0, v2465:0, v2466:0, v2467:0, v2468:0, 1 + v2469:0, 1, v2469:0, v2463:0 + 4 * v2469:0, v2607:0, 0, v2475:0, v2476:0, v2477:0, v2478:0, v2479:0, v2485:0, v2480:0, v2486:0, v2481:0, v2487:0, v2488:0, v2489:0, v2490:0, v2491:0, v2492:0, v2493:0, v2482:1, v2483:1, v2484:1, 3, 7, 4, 2, 8) :|: v2463:0 + 4 * v2469:0 > 4 && v2607:0 < 1 && v2464:0 > 1 && v2464:0 > 1 + v2469:0 && v2469:0 > 0 && v2488:0 > 7 f_1168(v3183:0, v3184:0, v3185:0, v3186:0, v3187:0, v3188:0, v3189:0, 1, v3191:0, 0, v3193:0, 1, v3195:0, v3196:0, v3197:0, v3203:0, v3198:0, v3204:0, v3199:0, v3205:0, v3206:0, v3207:0, v3208:0, v3209:0, v3210:0, v3212:0, 0, v3211:0, v3214:0, v3200:0, v3201:0, v3202:0, 3, 7, 4, 2, 5, 8) -> f_1082(v3183:0, v3184:0, v3185:0, v3186:0, v3187:0, v3188:0, 1 + v3189:0, 1, v3189:0, v3191:0, 0, 0, v3189:0, v3191:0, v3195:0, v3196:0, v3197:0, v3203:0, v3198:0, v3204:0, v3199:0, v3205:0, v3206:0, v3207:0, v3208:0, v3209:0, v3210:0, v3212:0, v2482:0, v2483:0, v2484:0, 3, 7, 4, 2, 8) :|: v3189:0 > 0 && v3184:0 > 1 && v3206:0 > 7 && v3184:0 > 1 + v3189:0 f_1082(v2463:0, v2464:0, v2465:0, v2466:0, v2467:0, v2468:0, v2469:0, 1, v2471:0, v2472:0, v2473:0, 0, v2475:0, v2476:0, v2477:0, v2478:0, v2479:0, v2485:0, v2480:0, v2486:0, v2481:0, v2487:0, v2488:0, v2489:0, v2490:0, v2491:0, v2492:0, v2493:0, v2482:0, v2483:0, v2484:0, 3, 7, 4, 2, 8) -> f_1168(v2463:0, v2464:0, v2465:0, v2466:0, v2467:0, v2468:0, v2469:0, 1, v2463:0 + 4 * v2469:0, v3458:0, v2471:0, 1 + v3458:0, v2478:0, 1 + v2478:0, v2479:0, v2485:0, v2480:0, v2486:0, v2481:0, v2487:0, v2488:0, v2489:0, v2490:0, v2491:0, v2492:0, v2493:0, 0, v3211:0, v3214:0, v3200:0, v3201:0, v3202:0, 3, 7, 4, 2, 5, 8) :|: v2463:0 + 4 * v2469:0 > 4 && v3458:0 > -1 && v2478:0 > 0 f_1168(v3183:0, v3184:0, v3185:0, v3186:0, v3187:0, v3188:0, v3189:0, 1, v3183:0 + 4 * v3189:0, 1 + v3458:0, v3193:0, v3192:0, v3195:0, v3196:0, v3197:0, v3203:0, v3198:0, v3204:0, v3199:0, v3205:0, v3206:0, v3207:0, v3208:0, v3209:0, v3210:0, v3212:0, 0, v3211:0, v3214:0, v3200:0, v3201:0, v3202:0, 3, 7, 4, 2, 5, 8) -> f_1168(v3183:0, v3184:0, v3185:0, v3186:0, v3187:0, v3188:0, v3189:0, 1, v3183:0 + 4 * v3189:0, v3458:0, v3193:0, 1 + v3458:0, v3196:0, 1 + v3196:0, v3197:0, v3203:0, v3198:0, v3204:0, v3199:0, v3205:0, v3206:0, v3207:0, v3208:0, v3209:0, v3210:0, v3212:0, 0, v3211:1, v3214:1, v3200:1, v3201:1, v3202:1, 3, 7, 4, 2, 5, 8) :|: v3458:0 > -1 && v3196:0 > 0 && v3192:0 > 1 Filtered unneeded arguments: f_1082(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) -> f_1082(x1, x2, x7, x16, x23) f_1168(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) -> f_1168(x1, x2, x7, x9, x10, x12, x14, x21) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: f_1082(v2463:0, v2464:0, v2469:0, v2478:0, v2488:0) -> f_1082(v2463:0, v2464:0, 1 + v2469:0, v2478:0, v2488:0) :|: v2464:0 > 1 && v2463:0 + 4 * v2469:0 > 4 && v2464:0 > 1 + v2469:0 && v2488:0 > 7 && v2469:0 > 0 f_1168(v3183:0, v3184:0, v3189:0, v3191:0, cons_0, cons_1, v3196:0, v3206:0) -> f_1082(v3183:0, v3184:0, 1 + v3189:0, v3196:0, v3206:0) :|: v3184:0 > 1 && v3189:0 > 0 && v3184:0 > 1 + v3189:0 && v3206:0 > 7 && cons_0 = 0 && cons_1 = 1 f_1082(v2463:0, v2464:0, v2469:0, v2478:0, v2488:0) -> f_1168(v2463:0, v2464:0, v2469:0, v2463:0 + 4 * v2469:0, v3458:0, 1 + v3458:0, 1 + v2478:0, v2488:0) :|: v3458:0 > -1 && v2478:0 > 0 && v2463:0 + 4 * v2469:0 > 4 f_1168(v3183:0, v3184:0, v3189:0, sum~v3183:0~times~cons_4~v3189:0, sum~cons_1~v3458:0, v3192:0, v3196:0, v3206:0) -> f_1168(v3183:0, v3184:0, v3189:0, v3183:0 + 4 * v3189:0, v3458:0, 1 + v3458:0, 1 + v3196:0, v3206:0) :|: v3196:0 > 0 && v3192:0 > 1 && v3458:0 > -1 && sum~v3183:0~times~cons_4~v3189:0 = v3183:0 + 4 * v3189:0 && sum~cons_1~v3458:0 = 1 + v3458:0 ---------------------------------------- (9) Obligation: Rules: f_1082(v2463:0, v2464:0, v2469:0, v2478:0, v2488:0) -> f_1082(v2463:0, v2464:0, 1 + v2469:0, v2478:0, v2488:0) :|: v2464:0 > 1 && v2463:0 + 4 * v2469:0 > 4 && v2464:0 > 1 + v2469:0 && v2488:0 > 7 && v2469:0 > 0 f_1168(v3183:0, v3184:0, v3189:0, v3191:0, cons_0, cons_1, v3196:0, v3206:0) -> f_1082(v3183:0, v3184:0, 1 + v3189:0, v3196:0, v3206:0) :|: v3184:0 > 1 && v3189:0 > 0 && v3184:0 > 1 + v3189:0 && v3206:0 > 7 && cons_0 = 0 && cons_1 = 1 f_1082(x, x1, x2, x3, x4) -> f_1168(x, x1, x2, x + 4 * x2, x5, 1 + x5, 1 + x3, x4) :|: x5 > -1 && x3 > 0 && x + 4 * x2 > 4 f_1168(x6, x7, x8, x9, x10, x11, x12, x13) -> f_1168(x6, x7, x8, x6 + 4 * x8, x14, 1 + x14, 1 + x12, x13) :|: x12 > 0 && x11 > 1 && x14 > -1 && x9 = x6 + 4 * x8 && x10 = 1 + x14 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_1082_8,1) (f_1168_8,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 := x5; oldX6 := x6; oldX7 := x7; oldX8 := nondet(); oldX9 := nondet(); oldX10 := nondet(); assume(oldX1 > 1 && oldX0 + 4 * oldX2 > 4 && oldX1 > 1 + oldX2 && oldX4 > 7 && oldX2 > 0); x0 := oldX0; x1 := oldX1; x2 := 1 + oldX2; x3 := oldX3; x4 := oldX4; x5 := oldX8; x6 := oldX9; x7 := oldX10; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := nondet(); oldX9 := nondet(); oldX10 := nondet(); assume(oldX1 > 1 && oldX2 > 0 && oldX1 > 1 + oldX2 && oldX7 > 7 && oldX4 = 0 && oldX5 = 1); x0 := oldX0; x1 := oldX1; x2 := 1 + oldX2; x3 := oldX6; x4 := oldX7; x5 := oldX8; x6 := oldX9; x7 := oldX10; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := nondet(); assume(oldX8 > -1 && oldX3 > 0 && oldX0 + 4 * oldX2 > 4); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX0 + 4 * oldX2; x4 := oldX8; x5 := 1 + oldX8; x6 := 1 + oldX3; x7 := oldX4; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := x5; oldX6 := x6; oldX7 := x7; oldX8 := oldX4 - 1; assume(oldX6 > 0 && oldX5 > 1 && oldX8 > -1 && oldX3 = oldX0 + 4 * oldX2 && oldX4 = 1 + oldX8); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX0 + 4 * oldX2; x4 := oldX4 - 1; x5 := 1 + oldX8; x6 := 1 + oldX6; x7 := oldX7; TO: 2; ---------------------------------------- (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: 5*x1-5*x2 RF for loc. 7: 5*x1-5*x2 RF for loc. 8: 5*x1-5*x2 RF for loc. 12: 5*x1-5*x2 Bound for (chained) transitions 5: 10 - Rank function 2: RF for loc. 6: 1+2*x1-2*x2 RF for loc. 7: 2*x1-2*x2 RF for loc. 8: 1+2*x1-2*x2 RF for loc. 12: 2*x1-2*x2 Bound for (chained) transitions 17: 4 - Rank function 3: RF for loc. 6: -2 RF for loc. 7: -2*x6 RF for loc. 8: -3 RF for loc. 12: -1-2*x6 Bound for (chained) transitions 2: -2 - Rank function 4: RF for loc. 7: -2*x6 RF for loc. 8: -3 RF for loc. 12: -1-2*x6 Bound for (chained) transitions 6: -3 - Rank function 5: RF for loc. 7: 2*x4 RF for loc. 12: -1+2*x4 Bound for (chained) transitions 18: 1 - Rank function 6: RF for loc. 7: 0 RF for loc. 12: -1 Bound for (chained) transitions 14: 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_945(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_950(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: 0 = 0 f_950(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_955(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: 0 = 0 f_955(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_960(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: 0 = 0 f_960(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_965(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) :|: 0 = 0 f_965(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) -> f_971(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) :|: 1 + v1850 = v1692 && 0 <= v1850 f_971(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) -> f_975(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) :|: TRUE f_975(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) -> f_979(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) :|: 0 = 0 f_979(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8) -> f_985(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: v1854 = 1 + v1695 && 2 <= v1854 f_985(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_991(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: TRUE f_991(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_997(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: TRUE f_997(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_1002(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: 0 = 0 f_1002(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_1007(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: 0 = 0 f_1007(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_1012(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: 0 = 0 f_1012(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_1015(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: 0 = 0 f_1015(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1850, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_1018(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) :|: 0 = 0 f_1018(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 8, 2) -> f_1021(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: 0 < v1850 && 2 <= v1692 f_1021(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_1027(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: 0 = 0 f_1027(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_1033(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: TRUE f_1033(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_940(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1850, v1692, v1695, v1854, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: TRUE f_940(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) -> f_945(v1684, v1685, v1686, v1687, v1688, v1689, 0, 1, v1692, v1693, v1694, v1695, v1696, v1702, v1697, v1703, v1698, v1704, v1705, v1706, v1707, v1708, v1709, v1699, v1700, v1701, 3, 7, 4, 2, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_945(v1684:0, v1685:0, v1686:0, v1687:0, v1688:0, v1689:0, 0, 1, 1 + v1850:0, v1693:0, v1694:0, v1695:0, v1696:0, v1702:0, v1697:0, v1703:0, v1698:0, v1704:0, v1705:0, v1706:0, v1707:0, v1708:0, v1709:0, v1699:0, v1700:0, v1701:0, 3, 7, 4, 2, 8) -> f_945(v1684:0, v1685:0, v1686:0, v1687:0, v1688:0, v1689:0, 0, 1, v1850:0, 1 + v1850:0, v1695:0, 1 + v1695:0, v1696:0, v1702:0, v1697:0, v1703:0, v1698:0, v1704:0, v1705:0, v1706:0, v1707:0, v1708:0, v1709:0, v1699:0, v1700:0, v1701:0, 3, 7, 4, 2, 8) :|: v1850:0 > 0 && v1695:0 > 0 Filtered unneeded arguments: f_945(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) -> f_945(x9, x12) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_945(sum~cons_1~v1850:0, v1695:0) -> f_945(v1850:0, 1 + v1695:0) :|: v1850:0 > 0 && v1695:0 > 0 && sum~cons_1~v1850:0 = 1 + v1850:0 ---------------------------------------- (16) Obligation: Rules: f_945(sum~cons_1~v1850:0, v1695:0) -> f_945(v1850:0, 1 + v1695:0) :|: v1850:0 > 0 && v1695:0 > 0 && sum~cons_1~v1850:0 = 1 + v1850:0 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_945_2,1) ---------------------------------------- (18) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX0 - 1; assume(oldX2 > 0 && oldX1 > 0 && oldX0 = 1 + oldX2); x0 := oldX0 - 1; x1 := 1 + oldX1; 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+2*x0 RF for loc. 6: 2*x0 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 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 20 rulesP rules: f_909(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1589, v1590, v1591, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) -> f_913(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1589, v1590, v1591, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) :|: 0 = 0 f_913(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1589, v1590, v1591, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) -> f_917(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1590, v1591, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) :|: 0 = 0 f_917(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1590, v1591, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) -> f_920(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1590, v1591, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) :|: 0 = 0 f_920(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1590, v1591, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) -> f_923(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1591, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: v1670 = v1581 + 4 * v1587 && 5 <= v1670 f_923(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1591, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_926(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: TRUE f_926(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_932(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: v1673 <= 0 f_932(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_938(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_938(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_944(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: TRUE f_944(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_949(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: TRUE f_949(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1589, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_954(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_954(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_959(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1785, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: v1785 = 1 + v1587 && 2 <= v1785 f_959(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1785, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_964(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1785, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: TRUE f_964(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1785, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_970(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1785, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: TRUE f_970(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1670, v1673, 0, v1785, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_974(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_974(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_978(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) :|: 0 = 0 f_978(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 2, 8, 5) -> f_983(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 8, 12, 5, 2) :|: v1785 < v1582 && 3 <= v1582 && 12 <= v1602 f_983(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 8, 12, 5, 2) -> f_989(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 8, 12, 5, 2) :|: 0 = 0 f_989(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 8, 12, 5, 2) -> f_995(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 8, 12, 5, 2) :|: TRUE f_995(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1590, v1591, v1596, v1597, v1598, 3, 7, 4, 8, 12, 5, 2) -> f_905(v1581, v1582, v1583, v1584, v1585, v1586, v1785, 1, v1587, v1670, v1673, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) :|: TRUE f_905(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1589, v1590, v1591, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) -> f_909(v1581, v1582, v1583, v1584, v1585, v1586, v1587, 1, v1589, v1590, v1591, 0, v1593, v1599, v1594, v1600, v1595, v1601, v1602, v1603, v1604, v1605, v1606, v1607, v1596, v1597, v1598, 3, 7, 4, 2, 8) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_909(v1581:0, v1582:0, v1583:0, v1584:0, v1585:0, v1586:0, v1587:0, 1, v1589:0, v1590:0, v1591:0, 0, v1593:0, v1599:0, v1594:0, v1600:0, v1595:0, v1601:0, v1602:0, v1603:0, v1604:0, v1605:0, v1606:0, v1607:0, v1596:0, v1597:0, v1598:0, 3, 7, 4, 2, 8) -> f_909(v1581:0, v1582:0, v1583:0, v1584:0, v1585:0, v1586:0, 1 + v1587:0, 1, v1587:0, v1581:0 + 4 * v1587:0, v1673:0, 0, v1593:0, v1599:0, v1594:0, v1600:0, v1595:0, v1601:0, v1602:0, v1603:0, v1604:0, v1605:0, v1606:0, v1607:0, v1596:0, v1597:0, v1598:0, 3, 7, 4, 2, 8) :|: v1581:0 + 4 * v1587:0 > 4 && v1673:0 < 1 && v1587:0 > 0 && v1582:0 > 2 && v1602:0 > 11 && v1582:0 > 1 + v1587:0 Filtered unneeded arguments: f_909(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) -> f_909(x1, x2, x7, x19) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_909(v1581:0, v1582:0, v1587:0, v1602:0) -> f_909(v1581:0, v1582:0, 1 + v1587:0, v1602:0) :|: v1587:0 > 0 && v1581:0 + 4 * v1587:0 > 4 && v1582:0 > 2 && v1582:0 > 1 + v1587:0 && v1602:0 > 11 ---------------------------------------- (23) Obligation: Rules: f_909(v1581:0, v1582:0, v1587:0, v1602:0) -> f_909(v1581:0, v1582:0, 1 + v1587:0, v1602:0) :|: v1587:0 > 0 && v1581:0 + 4 * v1587:0 > 4 && v1582:0 > 2 && v1582:0 > 1 + v1587:0 && v1602:0 > 11 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_909_4,1) ---------------------------------------- (25) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(oldX2 > 0 && oldX0 + 4 * oldX2 > 4 && oldX1 > 2 && oldX1 > 1 + oldX2 && oldX3 > 11); x0 := oldX0; x1 := oldX1; x2 := 1 + oldX2; x3 := oldX3; 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*x1-2*x2 RF for loc. 6: 2*x1-2*x2 Bound for (chained) transitions 3: 4 - Rank function 2: RF for loc. 5: 2*x1-2*x2 RF for loc. 6: -1+2*x1-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 ---------------------------------------- (27) YES