NO proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could be disproven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 137 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 3303 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] (6) AND (7) LLVM Symbolic Execution Lasso (8) Lasso2IRS [EQUIVALENT, 179 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [COMPLETE, 1103 ms] (13) NO (14) LLVM Symbolic Execution Lasso (15) Lasso2IRS [EQUIVALENT, 92 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 953 ms] (20) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i32, align 4 %z = alloca i32, align 4 %res = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %x %3 = call i32 @__VERIFIER_nondet_int() store %3, %y %4 = load %y store %4, %z store 0, %res br %5 5: %6 = load %z %7 = icmp sgt %6 0 br %7, %8, %21 8: %9 = load %y %10 = icmp eq %9 0 br %10, %19, %11 11: %12 = load %y %13 = icmp sgt %12 0 br %13, %14, %17 14: %15 = load %x %16 = icmp sgt %15 0 br %17 17: %18 = phi [0, %11], [%16, %14] br %19 19: %20 = phi [1, %8], [%18, %17] br %21 21: %22 = phi [0, %5], [%20, %19] br %22, %23, %36 23: %24 = load %y %25 = icmp eq %24 0 br %25, %26, %30 26: %27 = load %res %28 = add %27 1 store %28, %res %29 = load %z store %29, %y br %35 30: %31 = load %x %32 = add %31 1 store %32, %x %33 = load %y %34 = sub %33 1 store %34, %y br %35 35: br %5 36: 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) SymbolicExecutionGraphToLassoProof (COMPLETE) Converted SEGraph to 2 dependent lassos. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: Lasso ---------------------------------------- (8) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 131 rulesP rules: f_644(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_645(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_645(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_646(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_646(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_647(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_647(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_648(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, v3372, 0, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_648(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, v3372, 0, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_649(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_649(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_650(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_650(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_651(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_651(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_652(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_652(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_653(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_653(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_654(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_654(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_655(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_655(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_656(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_656(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_657(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_657(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_658(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_658(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_659(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_659(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_660(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_660(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_661(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: 0 = 0 f_661(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_662(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_662(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3373, v3372, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_704(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, v3369, 0, v3373, v3372, 1, 0, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_704(v3991, v3992, v3993, v3994, v3995, v3996, v3997, 1, v3999, 0, v4001, v4002, v4003, v4004, v4005, v4006, v4007, v4008, v4009, v4010, v4011, 3, 2, 4) -> f_746(v3991, v3992, v3993, v3994, v3995, v3996, v3997, 1, v3999, 0, v4001, v4002, v4003, v4004, v4005, v4006, v4007, v4008, v4009, v4010, v4011, 3, 2, 4) :|: TRUE f_746(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4400, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_747(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_747(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_748(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: v4410 = 1 + v4399 && 3 <= v4410 f_748(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_749(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_749(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4401, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_750(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_750(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4402, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_751(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 1 + v4412 = v4397 && 0 <= v4412 f_751(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_752(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_752(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_753(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_753(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_754(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_754(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_755(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_755(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_756(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_756(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_757(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_757(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4397, 0, v4399, v4410, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_758(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_758(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_759(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: v4412 = 0 f_758(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_760(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: v4412 != 0 && 2 <= v4397 f_759(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_761(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_761(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_763(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_763(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_765(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_765(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_767(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_767(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_769(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_769(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_771(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_771(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_773(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_773(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_775(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_775(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_777(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: v4624 = 1 + v4404 && 2 <= v4624 f_777(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_779(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_779(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_781(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_781(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_783(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_783(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_785(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_785(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_643(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, 0, v4399, v4410, v4404, v4624, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_643(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) -> f_644(v3363, v3364, v3365, v3366, v3367, v3368, v3369, 1, 0, v3372, v3373, v3374, v3375, v3376, v3377, v3378, v3379, v3380, 3, 2, 4) :|: TRUE f_760(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_762(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_762(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_764(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_764(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4397, v4399, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_766(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4399, v4397, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_766(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4399, v4397, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_768(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4399, v4397, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_768(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4399, v4397, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_770(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4399, v4397, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_770(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4399, v4397, v4410, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_772(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_772(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_774(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_774(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_776(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_776(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_778(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_778(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_780(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_780(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_782(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_782(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4397, v4399, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_784(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_784(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_786(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: 0 = 0 f_786(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_787(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_787(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) -> f_746(v4389, v4390, v4391, v4392, v4393, v4394, v4395, 1, v4412, 0, v4410, v4399, v4397, v4412, v4403, v4404, v4405, v4406, v4407, v4408, v4409, 3, 2, 4) :|: TRUE f_153 -> f_154(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_154(v1, v2, 3, 1, 4) -> f_155(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_155(v1, v3, v2, v4, 3, 1, 4) -> f_156(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_156(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_157(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) :|: 1 <= v7 && v8 = 3 + v7 && 4 <= v8 f_157(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) -> f_158(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 3, 1, 4) :|: 1 <= v9 && v10 = 3 + v9 && 4 <= v10 f_158(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 3, 1, 4) -> f_159(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_159(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_160(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_160(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_161(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_161(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_162(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_162(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_163(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_163(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_164(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: 0 = 0 f_164(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_165(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_165(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_166(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_166(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_167(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_167(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_168(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: 0 = 0 f_168(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_169(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: 0 < v13 f_169(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_171(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) :|: 0 = 0 f_171(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) -> f_173(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) :|: TRUE f_173(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) -> f_175(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) :|: 0 = 0 f_175(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) -> f_177(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_177(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_178(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_178(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_179(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_179(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_180(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_180(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_181(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_181(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_182(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_182(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_183(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 < v11 f_183(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_185(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_185(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_187(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_187(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_189(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_189(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_191(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_191(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_193(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_193(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_195(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_195(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_196(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_196(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_197(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_197(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_198(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_198(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_199(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) :|: v21 = 1 + v11 && 2 <= v21 f_199(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) -> f_200(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_200(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) -> f_201(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) :|: 0 = 0 f_201(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) -> f_202(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: 1 + v23 = v13 && 0 <= v23 f_202(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_203(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_203(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_204(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_204(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_205(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_205(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_256(v1, v3, v5, v7, v9, v11, v13, 1, v13, 0, v11, v21, v23, v2, v4, v6, v8, v10, 3, 2, 4) :|: TRUE f_256(v135, v136, v137, v138, v139, v140, v141, 1, v143, 0, v145, v146, v147, v148, v149, v150, v151, v152, 3, 2, 4) -> f_307(v135, v136, v137, v138, v139, v140, v141, 1, v143, 0, v145, v146, v147, v148, v149, v150, v151, v152, 3, 2, 4) :|: TRUE f_307(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_308(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_308(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_309(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_309(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_310(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_310(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_311(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_311(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_312(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: v269 = 0 f_312(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_314(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_314(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_316(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_316(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_318(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_318(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_320(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_320(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_322(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_322(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_324(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_324(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_326(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_326(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_328(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_328(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_330(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_330(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_332(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_332(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_334(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_334(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_336(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_336(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_338(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_338(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_407(v257, v258, v259, v260, v261, v262, v263, 1, 0, v267, v268, 0, 1, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_407(v998, v999, v1000, v1001, v1002, v1003, v1004, 1, 0, v1007, v1008, v1009, v1010, v1011, v1012, v1013, v1014, v1015, 3, 2, 4) -> f_466(v998, v999, v1000, v1001, v1002, v1003, v1004, 1, 0, v1007, v1008, v1009, v1010, v1011, v1012, v1013, v1014, v1015, 3, 2, 4) :|: TRUE f_466(v1596, v1597, v1598, v1599, v1600, v1601, v1602, 1, 0, v1605, v1606, v1607, v1608, v1609, v1610, v1611, v1612, v1613, 3, 2, 4) -> f_525(v1596, v1597, v1598, v1599, v1600, v1601, v1602, 1, 0, v1605, v1606, v1607, v1608, v1609, v1610, v1611, v1612, v1613, 3, 2, 4) :|: TRUE f_525(v2185, v2186, v2187, v2188, v2189, v2190, v2191, 1, 0, v2194, v2195, v2196, v2197, v2198, v2199, v2200, v2201, v2202, 3, 2, 4) -> f_584(v2185, v2186, v2187, v2188, v2189, v2190, v2191, 1, 0, v2194, v2195, v2196, v2197, v2198, v2199, v2200, v2201, v2202, 3, 2, 4) :|: TRUE f_584(v2774, v2775, v2776, v2777, v2778, v2779, v2780, 1, 0, v2783, v2784, v2785, v2786, v2787, v2788, v2789, v2790, v2791, 3, 2, 4) -> f_643(v2774, v2775, v2776, v2777, v2778, v2779, v2780, 1, 0, v2783, v2784, v2785, v2786, v2787, v2788, v2789, v2790, v2791, 3, 2, 4) :|: TRUE Combined rules. Obtained 3 rulesP rules: f_153 -> f_758(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 1, 1, 0, 0, 1, 1 + v11:0, 1 + (1 + v11:0), 0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3 + v9:0, 3, 2, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > 0 && v11:0 > 0 f_758(v4389:0, v4390:0, v4391:0, v4392:0, v4393:0, v4394:0, 1 + v4412:1, 1, 0, 0, v4397:0, v4399:0, v4410:0, v4403:0, v4404:0, v4405:0, v4406:0, v4407:0, v4408:0, v4409:0, 3, 2, 4) -> f_758(v4389:0, v4390:0, v4391:0, v4392:0, v4393:0, v4394:0, 1 + v4412:1, 1, v4412:1, 0, 1 + v4412:1, v4410:0, 1 + v4410:0, v4404:0, 1 + v4404:0, v4405:0, v4406:0, v4407:0, v4408:0, v4409:0, 3, 2, 4) :|: v4410:0 > 1 && v4404:0 > 0 && v4412:1 > -1 f_758(v4389:0, v4390:0, v4391:0, v4392:0, v4393:0, v4394:0, v4395:0, 1, 1 + v4412:1, 0, v4397:0, v4399:0, v4410:0, v4403:0, v4404:0, v4405:0, v4406:0, v4407:0, v4408:0, v4409:0, 3, 2, 4) -> f_758(v4389:0, v4390:0, v4391:0, v4392:0, v4393:0, v4394:0, v4395:0, 1, v4412:1, 0, 1 + v4412:1, v4410:0, 1 + v4410:0, v4403:0, v4404:0, v4405:0, v4406:0, v4407:0, v4408:0, v4409:0, 3, 2, 4) :|: v4397:0 > 1 && v4412:1 > -1 && v4410:0 > 1 Filtered unneeded arguments: f_758(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23) -> f_758(x7, x9, x11, x13, x15) Removed division, modulo operations, cleaned up constraints. Obtained 3 rules.P rules: f_153 -> f_758(1, 0, 1, 1 + (1 + v11:0), 1) :|: v11:0 > 0 f_758(sum~cons_1~v4412:1, cons_0, v4397:0, v4410:0, v4404:0) -> f_758(1 + v4412:1, v4412:1, 1 + v4412:1, 1 + v4410:0, 1 + v4404:0) :|: v4404:0 > 0 && v4412:1 > -1 && v4410:0 > 1 && sum~cons_1~v4412:1 = 1 + v4412:1 && cons_0 = 0 f_758(v4395:0, sum~cons_1~v4412:1, v4397:0, v4410:0, v4404:0) -> f_758(v4395:0, v4412:1, 1 + v4412:1, 1 + v4410:0, v4404:0) :|: v4412:1 > -1 && v4410:0 > 1 && v4397:0 > 1 && sum~cons_1~v4412:1 = 1 + v4412:1 ---------------------------------------- (9) Obligation: Rules: f_153 -> f_758(1, 0, 1, 1 + (1 + v11:0), 1) :|: v11:0 > 0 f_758(sum~cons_1~v4412:1, cons_0, v4397:0, v4410:0, v4404:0) -> f_758(1 + v4412:1, v4412:1, 1 + v4412:1, 1 + v4410:0, 1 + v4404:0) :|: v4404:0 > 0 && v4412:1 > -1 && v4410:0 > 1 && sum~cons_1~v4412:1 = 1 + v4412:1 && cons_0 = 0 f_758(x, x1, x2, x3, x4) -> f_758(x, x5, 1 + x5, 1 + x3, x4) :|: x5 > -1 && x3 > 1 && x2 > 1 && x1 = 1 + x5 Start term: f_153 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_153_5,1) (f_758_5,2) ---------------------------------------- (11) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); assume(oldX5 > 0); x0 := 1; x1 := 0; x2 := 1; x3 := 1 + (1 + oldX5); x4 := 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX0 - 1; assume(oldX4 > 0 && oldX5 > -1 && oldX3 > 1 && oldX0 = 1 + oldX5 && oldX1 = 0); x0 := 1 + oldX5; x1 := oldX0 - 1; x2 := 1 + oldX5; x3 := 1 + oldX3; x4 := 1 + oldX4; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := oldX1 - 1; assume(oldX5 > -1 && oldX3 > 1 && oldX2 > 1 && oldX1 = 1 + oldX5); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX5; x3 := 1 + oldX3; x4 := oldX4; TO: 2; ---------------------------------------- (12) T2 (COMPLETE) Found this recurrent set for cutpoint 5: 1 <= oldX5 and 1 <= x0 and x0 <= 1 and 0 <= x1 and x1 <= 0 and 3 <= x3 and 1 <= x4 and x0-oldX5 <= 0 and 2 <= oldX5+x0 and x1-oldX5 <= -1 and 1 <= oldX5+x1 and oldX5-x3 <= -2 and 4 <= oldX5+x3 and 2 <= oldX5+x4 and x0-x1 <= 1 and x1-x0 <= -1 and x0+x1 <= 1 and 1 <= x0+x1 and x0-x3 <= -2 and 4 <= x0+x3 and x0-x4 <= 0 and 2 <= x0+x4 and x1-x3 <= -3 and 3 <= x1+x3 and x1-x4 <= -1 and 1 <= x1+x4 and x4-x3 <= -2 and 4 <= x3+x4 and -x0+1 <= 0 and -x4+1 <= 0 and -x3+2 <= 0 and -x1 <= 0 and x1 <= 0 ---------------------------------------- (13) NO ---------------------------------------- (14) Obligation: Lasso ---------------------------------------- (15) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 72 rulesP rules: f_308(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_309(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_309(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_310(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_310(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_311(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_311(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_313(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: v269 != 0 && 2 <= v265 && 2 <= v263 f_313(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_315(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_315(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_317(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_317(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v265, v267, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_319(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v267, v265, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_319(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v267, v265, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_321(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v267, v265, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_321(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v267, v265, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_323(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v267, v265, v268, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_323(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v267, v265, v268, v270, v271, v272, v273, v274, 3, 2, 4) -> f_325(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_325(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) -> f_327(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_327(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) -> f_329(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_329(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) -> f_331(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_331(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) -> f_333(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_333(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) -> f_335(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_335(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v267, v270, v271, v272, v273, v274, 3, 2, 4) -> f_337(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v267, v265, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_337(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v267, v265, v270, v271, v272, v273, v274, 3, 2, 4) -> f_339(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v267, v265, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_339(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v267, v265, v270, v271, v272, v273, v274, 3, 2, 4) -> f_341(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v267, v265, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_341(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v267, v265, v270, v271, v272, v273, v274, 3, 2, 4) -> f_343(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_343(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v265, v270, v271, v272, v273, v274, 3, 2, 4) -> f_345(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v265, v270, v271, v272, v273, v274, 3, 2, 4) :|: v360 = 1 + v268 && 3 <= v360 f_345(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v265, v270, v271, v272, v273, v274, 3, 2, 4) -> f_347(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v265, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_347(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v265, v270, v271, v272, v273, v274, 3, 2, 4) -> f_349(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_349(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v270, v271, v272, v273, v274, 3, 2, 4) -> f_351(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) :|: 1 + v371 = v269 && 0 <= v371 f_351(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) -> f_353(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_353(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) -> f_355(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_355(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) -> f_357(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_357(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) -> f_307(v257, v258, v259, v260, v261, v262, v263, 1, v269, 0, v268, v360, v371, v270, v271, v272, v273, v274, 3, 2, 4) :|: TRUE f_307(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) -> f_308(v257, v258, v259, v260, v261, v262, v263, 1, v265, 0, v267, v268, v269, v270, v271, v272, v273, v274, 3, 2, 4) :|: 0 = 0 f_153 -> f_154(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_154(v1, v2, 3, 1, 4) -> f_155(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_155(v1, v3, v2, v4, 3, 1, 4) -> f_156(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_156(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_157(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) :|: 1 <= v7 && v8 = 3 + v7 && 4 <= v8 f_157(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) -> f_158(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 3, 1, 4) :|: 1 <= v9 && v10 = 3 + v9 && 4 <= v10 f_158(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 3, 1, 4) -> f_159(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_159(v1, v3, v5, v7, v9, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_160(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_160(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_161(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_161(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_162(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_162(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_163(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_163(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_164(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: 0 = 0 f_164(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_165(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_165(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_166(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_166(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_167(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: TRUE f_167(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_168(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: 0 = 0 f_168(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_169(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) :|: 0 < v13 f_169(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, v10, 0, 3, 1, 4) -> f_171(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) :|: 0 = 0 f_171(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) -> f_173(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) :|: TRUE f_173(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) -> f_175(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) :|: 0 = 0 f_175(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, v10, 0, 3, 4) -> f_177(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_177(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_178(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_178(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_179(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_179(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_180(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_180(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_181(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_181(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_182(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_182(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_183(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 < v11 f_183(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_185(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_185(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_187(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_187(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_189(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_189(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_191(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_191(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_193(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_193(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_195(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_195(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_196(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_196(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_197(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: TRUE f_197(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_198(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) :|: 0 = 0 f_198(v1, v3, v5, v7, v9, v11, v13, 1, 0, v2, v4, v6, v8, v10, 3, 4) -> f_199(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) :|: v21 = 1 + v11 && 2 <= v21 f_199(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) -> f_200(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_200(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) -> f_201(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) :|: 0 = 0 f_201(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v2, v4, v6, v8, v10, 3, 4, 2) -> f_202(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: 1 + v23 = v13 && 0 <= v23 f_202(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_203(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_203(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_204(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_204(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_205(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) :|: TRUE f_205(v1, v3, v5, v7, v9, v11, v13, 1, 0, v21, v23, v2, v4, v6, v8, v10, 3, 4, 2) -> f_256(v1, v3, v5, v7, v9, v11, v13, 1, v13, 0, v11, v21, v23, v2, v4, v6, v8, v10, 3, 2, 4) :|: TRUE f_256(v135, v136, v137, v138, v139, v140, v141, 1, v143, 0, v145, v146, v147, v148, v149, v150, v151, v152, 3, 2, 4) -> f_307(v135, v136, v137, v138, v139, v140, v141, 1, v143, 0, v145, v146, v147, v148, v149, v150, v151, v152, 3, 2, 4) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_308(v257:0, v258:0, v259:0, v260:0, v261:0, v262:0, v263:0, 1, v265:0, 0, v267:0, v268:0, 1 + v371:0, v270:0, v271:0, v272:0, v273:0, v274:0, 3, 2, 4) -> f_308(v257:0, v258:0, v259:0, v260:0, v261:0, v262:0, v263:0, 1, 1 + v371:0, 0, v268:0, 1 + v268:0, v371:0, v270:0, v271:0, v272:0, v273:0, v274:0, 3, 2, 4) :|: v265:0 > 1 && v371:0 > -1 && v263:0 > 1 && v268:0 > 1 f_153 -> f_308(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 1 + v23:0, 1, 1 + v23:0, 0, v11:0, 1 + v11:0, v23:0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3 + v9:0, 3, 2, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > 0 && v23:0 > -1 && v11:0 > 0 Filtered unneeded arguments: f_308(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_308(x7, x9, x12, x13) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_308(v263:0, v265:0, v268:0, sum~cons_1~v371:0) -> f_308(v263:0, 1 + v371:0, 1 + v268:0, v371:0) :|: v371:0 > -1 && v265:0 > 1 && v268:0 > 1 && v263:0 > 1 && sum~cons_1~v371:0 = 1 + v371:0 f_153 -> f_308(1 + v23:0, 1 + v23:0, 1 + v11:0, v23:0) :|: v23:0 > -1 && v11:0 > 0 ---------------------------------------- (16) Obligation: Rules: f_308(v263:0, v265:0, v268:0, sum~cons_1~v371:0) -> f_308(v263:0, 1 + v371:0, 1 + v268:0, v371:0) :|: v371:0 > -1 && v265:0 > 1 && v268:0 > 1 && v263:0 > 1 && sum~cons_1~v371:0 = 1 + v371:0 f_153 -> f_308(1 + v23:0, 1 + v23:0, 1 + v11:0, v23:0) :|: v23:0 > -1 && v11:0 > 0 Start term: f_153 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_308_4,1) (f_153_4,2) ---------------------------------------- (18) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := oldX3 - 1; assume(oldX4 > -1 && oldX1 > 1 && oldX2 > 1 && oldX0 > 1 && oldX3 = 1 + oldX4); x0 := oldX0; x1 := 1 + oldX4; x2 := 1 + oldX2; x3 := oldX3 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); oldX5 := nondet(); assume(oldX4 > -1 && oldX5 > 0); x0 := 1 + oldX4; x1 := 1 + oldX4; x2 := 1 + oldX5; x3 := 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+2*x3 RF for loc. 6: 2*x3 Bound for (chained) transitions 4: 2 - Rank function 2: RF for loc. 5: 1+2*x3 RF for loc. 6: 2*x3 Bound for (chained) transitions 3: 2 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (20) YES