/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- NO proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be disproven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 162 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 1597 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] (6) AND (7) LLVM Symbolic Execution Lasso (8) Lasso2IRS [EQUIVALENT, 137 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [COMPLETE, 1993 ms] (13) NO (14) LLVM Symbolic Execution Lasso (15) Lasso2IRS [EQUIVALENT, 147 ms] (16) IntTRS (17) IRS2T2 [EQUIVALENT, 0 ms] (18) T2IntSys (19) T2 [EQUIVALENT, 792 ms] (20) YES (21) LLVM Symbolic Execution Lasso (22) Lasso2IRS [EQUIVALENT, 123 ms] (23) IntTRS (24) IRS2T2 [EQUIVALENT, 0 ms] (25) T2IntSys (26) T2 [EQUIVALENT, 703 ms] (27) YES (28) LLVM Symbolic Execution Lasso (29) Lasso2IRS [EQUIVALENT, 126 ms] (30) IntTRS (31) IRS2T2 [EQUIVALENT, 0 ms] (32) T2IntSys (33) LLVM Symbolic Execution Lasso (34) Lasso2IRS [EQUIVALENT, 156 ms] (35) IntTRS (36) IRS2T2 [EQUIVALENT, 0 ms] (37) T2IntSys (38) T2 [EQUIVALENT, 1082 ms] (39) YES (40) LLVM Symbolic Execution Lasso (41) Lasso2IRS [EQUIVALENT, 118 ms] (42) IntTRS (43) IRS2T2 [EQUIVALENT, 0 ms] (44) T2IntSys (45) T2 [EQUIVALENT, 803 ms] (46) YES (47) LLVM Symbolic Execution Lasso (48) Lasso2IRS [EQUIVALENT, 135 ms] (49) IntTRS (50) IRS2T2 [EQUIVALENT, 0 ms] (51) T2IntSys (52) LLVM Symbolic Execution Lasso (53) Lasso2IRS [EQUIVALENT, 150 ms] (54) IntTRS (55) IRS2T2 [EQUIVALENT, 0 ms] (56) T2IntSys (57) T2 [EQUIVALENT, 803 ms] (58) YES (59) LLVM Symbolic Execution Lasso (60) Lasso2IRS [EQUIVALENT, 129 ms] (61) IntTRS (62) IRS2T2 [EQUIVALENT, 0 ms] (63) T2IntSys (64) T2 [EQUIVALENT, 733 ms] (65) YES (66) LLVM Symbolic Execution Lasso (67) Lasso2IRS [EQUIVALENT, 56 ms] (68) IntTRS (69) IRS2T2 [EQUIVALENT, 0 ms] (70) T2IntSys (71) T2 [EQUIVALENT, 952 ms] (72) YES (73) LLVM Symbolic Execution Lasso (74) Lasso2IRS [EQUIVALENT, 100 ms] (75) IntTRS (76) IRS2T2 [EQUIVALENT, 0 ms] (77) T2IntSys (78) T2 [EQUIVALENT, 652 ms] (79) YES (80) LLVM Symbolic Execution Lasso (81) Lasso2IRS [EQUIVALENT, 93 ms] (82) IntTRS (83) IRS2T2 [EQUIVALENT, 0 ms] (84) T2IntSys (85) T2 [EQUIVALENT, 802 ms] (86) YES (87) LLVM Symbolic Execution Lasso (88) Lasso2IRS [EQUIVALENT, 105 ms] (89) IntTRS (90) IRS2T2 [EQUIVALENT, 0 ms] (91) T2IntSys (92) T2 [EQUIVALENT, 1072 ms] (93) YES (94) LLVM Symbolic Execution Lasso (95) Lasso2IRS [EQUIVALENT, 98 ms] (96) IntTRS (97) IRS2T2 [EQUIVALENT, 0 ms] (98) T2IntSys (99) T2 [EQUIVALENT, 813 ms] (100) 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 %i = alloca i32, align 4 %up = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %i store 0, %up br %3 3: %4 = load %i %5 = icmp sgt %4 0 br %5, %6, %24 6: %7 = load %i %8 = icmp eq %7 1 br %8, %9, %10 9: store 1, %up br %10 10: %11 = load %i %12 = icmp eq %11 10 br %12, %13, %14 13: store 0, %up br %14 14: %15 = load %up %16 = icmp eq %15 1 br %16, %17, %20 17: %18 = load %i %19 = add %18 1 store %19, %i br %23 20: %21 = load %i %22 = sub %21 1 store %22, %i br %23 23: br %3 24: 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 14 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 136 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: v7 != 10 f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: 1 + v12 = v7 && 1 <= v12 f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_243(v1, v3, v5, v7, v7, 1, 0, v12, v2, v4, v6, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: v263 = 1 f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: 0 = 0 f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_686(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE Combined rules. Obtained 7 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_695(v1:0, v3:0, v5:0, v7:0, 2, 1, 0, 2, 1, v2:0, v4:0, v6:0, 3, 4) :|: FALSE f_105 -> f_695(v1:0, v3:0, v5:0, 2, 2, 1, 0, 2, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 7 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_105 -> f_695(2) :|: TRUE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (9) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_105 -> f_695(2) :|: TRUE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (11) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 2; TO: 2; FROM: 3; oldX0 := x0; assume(0 = 0); x0 := 2; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (12) T2 (COMPLETE) Found this recurrent set for cutpoint 7: 6 <= x0 and x0 <= 6 and x0+-10 <= 0 and -x0+10 <= 0 ---------------------------------------- (13) NO ---------------------------------------- (14) Obligation: Lasso ---------------------------------------- (15) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 157 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: v7 = 10 f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: 0 = 0 f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_313(v1, v3, v5, 10, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: v263 = 1 f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: 0 = 0 f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_686(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_695(v1:0, v3:0, v5:0, 10, 2, 1, 0, 2, 1, v2:0, v4:0, v6:0, 3, 4) :|: FALSE f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (16) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (17) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (18) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 2; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (19) T2 (EQUIVALENT) No proof given by T2 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: Lasso ---------------------------------------- (22) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 140 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: v7 = 1 f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: 0 = 0 f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_253(v1, v3, v5, 1, 2, 0, 1, v2, v4, v6, 3, 2, 4) :|: TRUE f_253(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) -> f_318(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) :|: TRUE f_318(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) -> f_362(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) :|: TRUE f_362(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) -> f_417(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) :|: TRUE f_417(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) :|: 0 = 0 f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_421(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: v1371 = 10 f_421(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_424(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_424(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_428(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_428(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_431(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_431(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_434(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_434(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_437(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_437(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_440(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_440(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_443(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_443(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_446(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_446(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_449(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_449(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_452(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_452(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_455(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_455(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_719(v1367, v1368, v1369, 1, 10, 1, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_649(v1:0, v3:0, v5:0, 1, 9, 1, 0, 9, 10, 10, v2:0, v4:0, v6:0, 3, 2, 4) :|: FALSE f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_649(9) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (23) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_649(9) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (24) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (25) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (26) T2 (EQUIVALENT) No proof given by T2 ---------------------------------------- (27) YES ---------------------------------------- (28) Obligation: Lasso ---------------------------------------- (29) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 136 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: v7 != 10 f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: 1 + v12 = v7 && 1 <= v12 f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_243(v1, v3, v5, v7, v7, 1, 0, v12, v2, v4, v6, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: v263 = 1 f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: 0 = 0 f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_686(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE Combined rules. Obtained 7 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_695(v1:0, v3:0, v5:0, v7:0, 2, 1, 0, 2, 1, v2:0, v4:0, v6:0, 3, 4) :|: FALSE f_105 -> f_695(v1:0, v3:0, v5:0, 2, 2, 1, 0, 2, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 7 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_105 -> f_695(2) :|: TRUE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (30) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_105 -> f_695(2) :|: TRUE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (31) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (32) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 2; TO: 2; FROM: 3; oldX0 := x0; assume(0 = 0); x0 := 2; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (33) Obligation: Lasso ---------------------------------------- (34) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 157 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: v7 = 10 f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: 0 = 0 f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_313(v1, v3, v5, 10, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: v263 = 1 f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: 0 = 0 f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_686(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_695(v1:0, v3:0, v5:0, 10, 2, 1, 0, 2, 1, v2:0, v4:0, v6:0, 3, 4) :|: FALSE f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (35) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (36) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (37) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 2; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (38) T2 (EQUIVALENT) No proof given by T2 ---------------------------------------- (39) YES ---------------------------------------- (40) Obligation: Lasso ---------------------------------------- (41) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 140 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: v7 = 1 f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: 0 = 0 f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_253(v1, v3, v5, 1, 2, 0, 1, v2, v4, v6, 3, 2, 4) :|: TRUE f_253(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) -> f_318(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) :|: TRUE f_318(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) -> f_362(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) :|: TRUE f_362(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) -> f_417(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) :|: TRUE f_417(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) :|: 0 = 0 f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_421(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: v1371 = 10 f_421(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_424(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_424(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_428(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_428(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_431(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_431(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_434(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_434(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_437(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_437(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_440(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_440(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_443(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_443(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_446(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_446(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_449(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_449(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_452(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_452(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_455(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_455(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_719(v1367, v1368, v1369, 1, 10, 1, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_649(v1:0, v3:0, v5:0, 1, 9, 1, 0, 9, 10, 10, v2:0, v4:0, v6:0, 3, 2, 4) :|: FALSE f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_649(9) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (42) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_649(9) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (43) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (44) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (45) T2 (EQUIVALENT) No proof given by T2 ---------------------------------------- (46) YES ---------------------------------------- (47) Obligation: Lasso ---------------------------------------- (48) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 136 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: v7 != 10 f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: 1 + v12 = v7 && 1 <= v12 f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_243(v1, v3, v5, v7, v7, 1, 0, v12, v2, v4, v6, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: v263 = 1 f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: 0 = 0 f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_686(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE Combined rules. Obtained 7 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_695(v1:0, v3:0, v5:0, v7:0, 2, 1, 0, 2, 1, v2:0, v4:0, v6:0, 3, 4) :|: FALSE f_105 -> f_695(v1:0, v3:0, v5:0, 2, 2, 1, 0, 2, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 7 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_105 -> f_695(2) :|: TRUE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (49) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_105 -> f_695(2) :|: TRUE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (50) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (51) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 2; TO: 2; FROM: 3; oldX0 := x0; assume(0 = 0); x0 := 2; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (52) Obligation: Lasso ---------------------------------------- (53) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 157 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: v7 = 10 f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: 0 = 0 f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_313(v1, v3, v5, 10, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: v263 = 1 f_254(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: 0 = 0 f_257(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_260(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_263(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) :|: TRUE f_266(v256, v257, v258, v259, 1, 2, 0, v264, v265, v266, 3, 4) -> f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_270(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_274(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_279(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_283(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_287(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_291(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_295(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: 0 = 0 f_299(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_303(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE f_307(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) -> f_686(v256, v257, v258, v259, 1, 0, 2, v264, v265, v266, 3, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_695(v1:0, v3:0, v5:0, 10, 2, 1, 0, 2, 1, v2:0, v4:0, v6:0, 3, 4) :|: FALSE f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (54) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_695(2) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (55) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (56) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 2; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (57) T2 (EQUIVALENT) No proof given by T2 ---------------------------------------- (58) YES ---------------------------------------- (59) Obligation: Lasso ---------------------------------------- (60) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 140 rulesP rules: f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_650(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_651(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_652(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: 1 + v3815 = v3791 && 0 <= v3815 && v3815 <= 8 f_653(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_654(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_655(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) :|: TRUE f_656(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3815, v3797, v3798, v3799, 3, 4, 8) -> f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) :|: 0 = 0 f_657(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 4, 8) -> f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 < v3815 && 2 <= v3791 f_658(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_660(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: TRUE f_662(v3787, v3788, v3789, v3790, v3815, 1, v3791, 0, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) :|: 0 = 0 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) :|: v3815 = 1 f_664(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 2, 4, 8) -> f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: v3815 != 1 && 2 <= v3815 && v3815 <= 8 && 3 <= v3791 f_665(v3787, v3788, v3789, v3790, 1, 0, 2, 9, 10, v3797, v3798, v3799, 3, 4) -> f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_667(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_669(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_671(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) :|: TRUE f_673(v3787, v3788, v3789, v3790, 1, 2, 0, 9, 10, v3797, v3798, v3799, 3, 4) -> f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_675(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_677(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_678(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_679(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_680(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_681(v3787, v3788, v3789, v3790, 1, 0, 9, 10, 2, v3797, v3798, v3799, 3, 4) -> f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_682(v3787, v3788, v3789, v3790, 1, 0, 10, 2, v3797, v3798, v3799, 3, 4) -> f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: 0 = 0 f_683(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_684(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_685(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) -> f_686(v3787, v3788, v3789, v3790, 1, 0, 2, v3797, v3798, v3799, 3, 4) :|: TRUE f_686(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_687(v4100, v4101, v4102, v4103, 1, 0, 2, v4107, v4108, v4109, 3, 4) -> f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_688(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_689(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_690(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_691(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: 0 = 0 f_692(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) :|: TRUE f_693(v4100, v4101, v4102, v4103, 2, 1, 0, v4107, v4108, v4109, 3, 4) -> f_694(v4100, v4101, v4102, v4103, 2, 1, 0, 1, 2, v4107, v4108, v4109, 3, 4) :|: TRUE f_694(v4276, v4277, v4278, v4279, v4280, 1, 0, v4283, 2, v4285, v4286, v4287, 3, 4) -> f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: v4280 = 10 f_695(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 4) -> f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: v4280 != 10 f_696(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_698(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_700(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_702(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_704(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_706(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_708(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_710(v4276, v4277, v4278, v4279, 10, 1, 0, 2, 9, v4285, v4286, v4287, 3, 4) -> f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_712(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: 0 = 0 f_714(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_716(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_718(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) -> f_719(v4276, v4277, v4278, v4279, 10, 1, 0, 9, v4285, v4286, v4287, 3, 4) :|: TRUE f_719(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) :|: TRUE f_721(v4635, v4636, v4637, v4638, 10, 1, 0, 9, v4643, v4644, v4645, 3, 4) -> f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_723(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_725(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) :|: TRUE f_727(v4635, v4636, v4637, v4638, 9, 1, 10, 0, v4643, v4644, v4645, 3, 4) -> f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_729(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_731(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_732(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_733(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: 0 = 0 f_734(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) :|: TRUE f_735(v4635, v4636, v4637, v4638, 9, 1, 0, 10, v4643, v4644, v4645, 3, 4) -> f_648(v4635, v4636, v4637, v4638, 9, 1, 0, 9, 10, 10, v4643, v4644, v4645, 3, 2, 4) :|: TRUE f_648(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) -> f_649(v3787, v3788, v3789, v3790, v3791, 1, 0, 9, 10, v3796, v3797, v3798, v3799, 3, 2, 4) :|: 0 = 0 f_697(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_699(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_701(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_703(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_705(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_707(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4283, v4285, v4286, v4287, 3, 10, 4) -> f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_709(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: v4505 = 1 + v4280 && 3 <= v4505 f_711(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_713(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_715(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_717(v4276, v4277, v4278, v4279, v4280, 1, 0, 2, v4505, v4285, v4286, v4287, 3, 10, 4) -> f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_720(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_722(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_724(v4276, v4277, v4278, v4279, v4505, 1, v4280, 0, 2, v4285, v4286, v4287, 3, 10, 4) -> f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_726(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: 0 = 0 f_728(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) :|: TRUE f_730(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 10, 4) -> f_694(v4276, v4277, v4278, v4279, v4505, 1, 0, v4280, 2, v4285, v4286, v4287, 3, 4) :|: TRUE f_666(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_668(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_670(v3787, v3788, v3789, v3790, v3815, 1, 0, v3791, 9, 10, v3797, v3798, v3799, 3, 4, 2, 8) -> f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_672(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: 0 = 0 f_674(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) :|: TRUE f_676(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 4, 2, 8) -> f_648(v3787, v3788, v3789, v3790, v3815, 1, 0, 9, 10, v3791, v3797, v3798, v3799, 3, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: v7 = 1 f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: 0 = 0 f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_253(v1, v3, v5, 1, 2, 0, 1, v2, v4, v6, 3, 2, 4) :|: TRUE f_253(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) -> f_318(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) :|: TRUE f_318(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) -> f_362(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) :|: TRUE f_362(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) -> f_417(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) :|: TRUE f_417(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) :|: 0 = 0 f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_421(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: v1371 = 10 f_421(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_424(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_424(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_428(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_428(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_431(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_431(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_434(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_434(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_437(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_437(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_440(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_440(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_443(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_443(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_446(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_446(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_449(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: 0 = 0 f_449(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_452(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_452(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_455(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE f_455(v1367, v1368, v1369, 1, 10, 0, 9, v1374, v1375, v1376, 3, 4) -> f_719(v1367, v1368, v1369, 1, 10, 1, 0, 9, v1374, v1375, v1376, 3, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_649(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_695(v3787:0, v3788:0, v3789:0, v3790:0, 2, 1, 0, 2, 1, v3797:0, v3798:0, v3799:0, 3, 4) :|: TRUE f_649(v3787:0, v3788:0, v3789:0, v3790:0, 1 + v3815:0, 1, 0, 9, 10, v3796:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) -> f_649(v3787:0, v3788:0, v3789:0, v3790:0, v3815:0, 1, 0, 9, 10, 1 + v3815:0, v3797:0, v3798:0, v3799:0, 3, 2, 4) :|: v3815:0 > 1 && v3815:0 < 9 f_105 -> f_649(v1:0, v3:0, v5:0, 1, 9, 1, 0, 9, 10, 10, v2:0, v4:0, v6:0, 3, 2, 4) :|: FALSE f_695(v4276:0, v4277:0, v4278:0, v4279:0, 10, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_649(v4276:0, v4277:0, v4278:0, v4279:0, 9, 1, 0, 9, 10, 10, v4285:0, v4286:0, v4287:0, 3, 2, 4) :|: TRUE f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, 1, 0, 2, v4283:0, v4285:0, v4286:0, v4287:0, 3, 4) -> f_695(v4276:0, v4277:0, v4278:0, v4279:0, 1 + v4280:0, 1, 0, 2, v4280:0, v4285:0, v4286:0, v4287:0, 3, 4) :|: v4280:0 > 10 Filtered unneeded arguments: f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_649(x5) f_695(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_695(x5) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_649(9) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 10 ---------------------------------------- (61) Obligation: Rules: f_649(cons_2) -> f_695(2) :|: TRUE && cons_2 = 2 f_649(sum~cons_1~v3815:0) -> f_649(v3815:0) :|: v3815:0 > 1 && v3815:0 < 9 && sum~cons_1~v3815:0 = 1 + v3815:0 f_105 -> f_649(9) :|: FALSE f_695(cons_10) -> f_649(9) :|: TRUE && cons_10 = 10 f_695(v4280:0) -> f_695(1 + v4280:0) :|: v4280:0 > 1 && v4280:0 < 10 f_695(x) -> f_695(1 + x) :|: x > 10 Start term: f_105 ---------------------------------------- (62) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_649_1,1) (f_695_1,2) (f_105_1,3) ---------------------------------------- (63) Obligation: START: 3; FROM: 1; oldX0 := x0; assume(0 = 0 && oldX0 = 2); x0 := 2; TO: 2; FROM: 1; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 > 1 && oldX1 < 9 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 1; FROM: 3; oldX0 := x0; assume(0 = 1); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 10); x0 := 9; TO: 1; FROM: 2; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 2; FROM: 2; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 2; ---------------------------------------- (64) T2 (EQUIVALENT) No proof given by T2 ---------------------------------------- (65) YES ---------------------------------------- (66) Obligation: Lasso ---------------------------------------- (67) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 58 rulesP rules: f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_422(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) :|: v1371 != 10 f_422(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) -> f_425(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_425(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) -> f_429(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_429(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) -> f_432(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_432(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) -> f_435(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_435(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) -> f_438(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_438(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 10, 2, 4) -> f_441(v1367, v1368, v1369, 1, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_441(v1367, v1368, v1369, 1, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) -> f_444(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) :|: v1523 = 1 + v1371 && 3 <= v1523 f_444(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) -> f_447(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_447(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) -> f_450(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_450(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) -> f_453(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_453(v1367, v1368, v1369, 1, v1371, 0, v1523, v1374, v1375, v1376, 3, 10, 2, 4) -> f_456(v1367, v1368, v1369, 1, v1523, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_456(v1367, v1368, v1369, 1, v1523, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) -> f_459(v1367, v1368, v1369, 1, v1523, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_459(v1367, v1368, v1369, 1, v1523, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) -> f_462(v1367, v1368, v1369, 1, v1523, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_462(v1367, v1368, v1369, 1, v1523, v1371, 0, v1374, v1375, v1376, 3, 10, 2, 4) -> f_465(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_465(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 10, 2, 4) -> f_468(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 10, 2, 4) :|: 0 = 0 f_468(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 10, 2, 4) -> f_471(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 10, 2, 4) :|: TRUE f_471(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 10, 2, 4) -> f_417(v1367, v1368, v1369, 1, v1523, 0, v1371, v1374, v1375, v1376, 3, 2, 4) :|: TRUE f_417(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) -> f_419(v1367, v1368, v1369, 1, v1371, 0, v1373, v1374, v1375, v1376, 3, 2, 4) :|: 0 = 0 f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: v7 = 1 f_122(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_124(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_126(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_128(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_130(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_133(v1, v3, v5, 1, v2, v4, v6, 0, 3, 4) -> f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_136(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_139(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_142(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_145(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_148(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_151(v1, v3, v5, 1, 0, v2, v4, v6, 3, 4) -> f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: 0 = 0 f_154(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_157(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_160(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) :|: TRUE f_163(v1, v3, v5, 1, 0, 2, v2, v4, v6, 3, 4) -> f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_166(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_169(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_172(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_175(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_179(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) :|: TRUE f_183(v1, v3, v5, 1, 2, 0, v2, v4, v6, 3, 4) -> f_253(v1, v3, v5, 1, 2, 0, 1, v2, v4, v6, 3, 2, 4) :|: TRUE f_253(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) -> f_318(v331, v332, v333, 1, v335, 0, v337, v338, v339, v340, 3, 2, 4) :|: TRUE f_318(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) -> f_362(v655, v656, v657, 1, v659, 0, v661, v662, v663, v664, 3, 2, 4) :|: TRUE f_362(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) -> f_417(v1018, v1019, v1020, 1, v1022, 0, v1024, v1025, v1026, v1027, 3, 2, 4) :|: TRUE Combined rules. Obtained 3 rulesP rules: f_419(v1367:0, v1368:0, v1369:0, 1, v1371:0, 0, v1373:0, v1374:0, v1375:0, v1376:0, 3, 2, 4) -> f_419(v1367:0, v1368:0, v1369:0, 1, 1 + v1371:0, 0, v1371:0, v1374:0, v1375:0, v1376:0, 3, 2, 4) :|: v1371:0 > 1 && v1371:0 < 10 f_419(v1367:0, v1368:0, v1369:0, 1, v1371:0, 0, v1373:0, v1374:0, v1375:0, v1376:0, 3, 2, 4) -> f_419(v1367:0, v1368:0, v1369:0, 1, 1 + v1371:0, 0, v1371:0, v1374:0, v1375:0, v1376:0, 3, 2, 4) :|: v1371:0 > 10 f_105 -> f_419(v1:0, v3:0, v5:0, 1, 2, 0, 1, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 2, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 Filtered unneeded arguments: f_419(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) -> f_419(x5) Removed division, modulo operations, cleaned up constraints. Obtained 3 rules.P rules: f_419(v1371:0) -> f_419(1 + v1371:0) :|: v1371:0 > 1 && v1371:0 < 10 f_419(v1371:0) -> f_419(1 + v1371:0) :|: v1371:0 > 10 f_105 -> f_419(2) :|: TRUE ---------------------------------------- (68) Obligation: Rules: f_419(v1371:0) -> f_419(1 + v1371:0) :|: v1371:0 > 1 && v1371:0 < 10 f_419(x) -> f_419(1 + x) :|: x > 10 f_105 -> f_419(2) :|: TRUE Start term: f_105 ---------------------------------------- (69) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_419_1,1) (f_105_1,2) ---------------------------------------- (70) Obligation: START: 2; FROM: 1; oldX0 := x0; assume(oldX0 > 1 && oldX0 < 10); x0 := 1 + oldX0; TO: 1; FROM: 1; oldX0 := x0; assume(oldX0 > 10); x0 := 1 + oldX0; TO: 1; FROM: 2; oldX0 := x0; assume(0 = 0); x0 := 2; TO: 1; ---------------------------------------- (71) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 4 using the following rank functions: - Rank function 1: RF for loc. 5: 1-2*x0 RF for loc. 6: -2*x0 Bound for (chained) transitions 4: -18 Used the following cutpoint-specific lexicographic rank functions: * For cutpoint 5, used the following rank functions/bounds (in descending priority order): - RF -x0+__const_10, bound 1 ---------------------------------------- (72) YES ---------------------------------------- (73) Obligation: Lasso ---------------------------------------- (74) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 74 rulesP rules: f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 1 && 2 <= v263 && 3 <= v260 && 3 <= v259 f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: v263 = 10 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 10 f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) -> f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_313(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_277(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: v7 != 10 f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: 1 + v12 = v7 && 1 <= v12 f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_243(v1, v3, v5, v7, v7, 1, 0, v12, v2, v4, v6, 3, 10, 2, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_245(v256:0, v257:0, v258:0, v259:0, 10, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, 8, 1, 9, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v259:0 > 2 && v260:0 > 2 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 0 && v260:0 > 2 && v259:0 > 2 && v503:0 < 9 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 9 && v259:0 > 2 && v260:0 > 2 f_105 -> f_245(v1:0, v3:0, v5:0, v7:0, v12:0, 1, v7:0, 0, v2:0, v4:0, v6:0, 3, 10, 2, 4) :|: FALSE f_105 -> f_245(v1:0, v3:0, v5:0, 1 + v12:0, v12:0, 1, 1 + v12:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 10, 2, 4) :|: v12:0 > 0 && v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v12:0 < 9 f_105 -> f_245(v1:0, v3:0, v5:0, 1 + v12:0, v12:0, 1, 1 + v12:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 10, 2, 4) :|: v12:0 > 9 && v3:0 > 0 && v1:0 > 0 && v5:0 > 0 Filtered unneeded arguments: f_245(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_245(x4, x5, x7) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v260:0 > 2 && v503:0 > 0 && v503:0 < 9 && v259:0 > 2 && sum~cons_1~v503:0 = 1 + v503:0 f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v259:0 > 2 && v260:0 > 2 && v503:0 > 9 && sum~cons_1~v503:0 = 1 + v503:0 f_105 -> f_245(v7:0, v12:0, v7:0) :|: FALSE f_105 -> f_245(1 + v12:0, v12:0, 1 + v12:0) :|: v12:0 > 0 && v12:0 < 9 f_105 -> f_245(1 + v12:0, v12:0, 1 + v12:0) :|: v12:0 > 9 ---------------------------------------- (75) Obligation: Rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_245(x, x1, x2) -> f_245(x, x3, 1 + x3) :|: x2 > 2 && x3 > 0 && x3 < 9 && x > 2 && x1 = 1 + x3 f_245(x4, x5, x6) -> f_245(x4, x7, 1 + x7) :|: x4 > 2 && x6 > 2 && x7 > 9 && x5 = 1 + x7 f_105 -> f_245(v7:0, v12:0, v7:0) :|: FALSE f_105 -> f_245(1 + x8, x8, 1 + x8) :|: x8 > 0 && x8 < 9 f_105 -> f_245(1 + x9, x9, 1 + x9) :|: x9 > 9 Start term: f_105 ---------------------------------------- (76) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_245_3,1) (f_105_3,2) ---------------------------------------- (77) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(oldX0 > 2 && oldX2 > 2 && oldX1 = 10); x0 := oldX0; x1 := 8; x2 := 9; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX2 > 2 && oldX3 > 0 && oldX3 < 9 && oldX0 > 2 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX0 > 2 && oldX2 > 2 && oldX3 > 9 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); oldX4 := nondet(); assume(0 = 1); x0 := oldX3; x1 := oldX4; x2 := oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); assume(oldX3 > 0 && oldX3 < 9); x0 := 1 + oldX3; x1 := oldX3; x2 := 1 + oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); assume(oldX3 > 9); x0 := 1 + oldX3; x1 := oldX3; x2 := 1 + oldX3; TO: 1; ---------------------------------------- (78) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 3, 6, 7, 8 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1 RF for loc. 6: 2*x1 Bound for (chained) transitions 6: 20 Bound for (chained) transitions 7: 4 Bound for (chained) transitions 8: 22 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 3: 1 ---------------------------------------- (79) YES ---------------------------------------- (80) Obligation: Lasso ---------------------------------------- (81) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 75 rulesP rules: f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 1 && 2 <= v263 && 3 <= v260 && 3 <= v259 f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: v263 = 10 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 10 f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) -> f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_313(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_277(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: v7 = 10 f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: 0 = 0 f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_313(v1, v3, v5, 10, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE Combined rules. Obtained 5 rulesP rules: f_245(v256:0, v257:0, v258:0, v259:0, 10, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, 8, 1, 9, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v259:0 > 2 && v260:0 > 2 f_105 -> f_245(v1:0, v3:0, v5:0, 10, v503:0, 1, 9, 0, v2:0, v4:0, v6:0, 3, 10, 2, 4) :|: FALSE f_105 -> f_245(v1:0, v3:0, v5:0, 10, 8, 1, 9, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 10, 2, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 0 && v260:0 > 2 && v259:0 > 2 && v503:0 < 9 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 9 && v259:0 > 2 && v260:0 > 2 Filtered unneeded arguments: f_245(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_245(x4, x5, x7) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_105 -> f_245(10, v503:0, 9) :|: FALSE f_105 -> f_245(10, 8, 9) :|: TRUE f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v260:0 > 2 && v503:0 > 0 && v503:0 < 9 && v259:0 > 2 && sum~cons_1~v503:0 = 1 + v503:0 f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v259:0 > 2 && v260:0 > 2 && v503:0 > 9 && sum~cons_1~v503:0 = 1 + v503:0 ---------------------------------------- (82) Obligation: Rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_105 -> f_245(10, v503:0, 9) :|: FALSE f_105 -> f_245(10, 8, 9) :|: TRUE f_245(x, x1, x2) -> f_245(x, x3, 1 + x3) :|: x2 > 2 && x3 > 0 && x3 < 9 && x > 2 && x1 = 1 + x3 f_245(x4, x5, x6) -> f_245(x4, x7, 1 + x7) :|: x4 > 2 && x6 > 2 && x7 > 9 && x5 = 1 + x7 Start term: f_105 ---------------------------------------- (83) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_245_3,1) (f_105_3,2) ---------------------------------------- (84) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(oldX0 > 2 && oldX2 > 2 && oldX1 = 10); x0 := oldX0; x1 := 8; x2 := 9; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); assume(0 = 1); x0 := 10; x1 := oldX3; x2 := 9; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(0 = 0); x0 := 10; x1 := 8; x2 := 9; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX2 > 2 && oldX3 > 0 && oldX3 < 9 && oldX0 > 2 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX0 > 2 && oldX2 > 2 && oldX3 > 9 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; ---------------------------------------- (85) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 7 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1 RF for loc. 6: 2*x1 Bound for (chained) transitions 5: 20 Bound for (chained) transitions 6: 4 Bound for (chained) transitions 7: 22 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 2: 1 ---------------------------------------- (86) YES ---------------------------------------- (87) Obligation: Lasso ---------------------------------------- (88) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 74 rulesP rules: f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 1 && 2 <= v263 && 3 <= v260 && 3 <= v259 f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: v263 = 10 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 10 f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) -> f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_313(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_277(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: v7 != 10 f_132(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_135(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_138(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_141(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_144(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_147(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) :|: 0 = 0 f_150(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 10, 4, 2) -> f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: 1 + v12 = v7 && 1 <= v12 f_153(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_156(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_159(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) :|: TRUE f_162(v1, v3, v5, v7, 1, 0, v12, v2, v4, v6, 3, 10, 4, 2) -> f_243(v1, v3, v5, v7, v7, 1, 0, v12, v2, v4, v6, 3, 10, 2, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_245(v256:0, v257:0, v258:0, v259:0, 10, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, 8, 1, 9, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v259:0 > 2 && v260:0 > 2 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 0 && v260:0 > 2 && v259:0 > 2 && v503:0 < 9 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 9 && v259:0 > 2 && v260:0 > 2 f_105 -> f_245(v1:0, v3:0, v5:0, v7:0, v12:0, 1, v7:0, 0, v2:0, v4:0, v6:0, 3, 10, 2, 4) :|: FALSE f_105 -> f_245(v1:0, v3:0, v5:0, 1 + v12:0, v12:0, 1, 1 + v12:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 10, 2, 4) :|: v12:0 > 0 && v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v12:0 < 9 f_105 -> f_245(v1:0, v3:0, v5:0, 1 + v12:0, v12:0, 1, 1 + v12:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 10, 2, 4) :|: v12:0 > 9 && v3:0 > 0 && v1:0 > 0 && v5:0 > 0 Filtered unneeded arguments: f_245(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_245(x4, x5, x7) Removed division, modulo operations, cleaned up constraints. Obtained 6 rules.P rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v260:0 > 2 && v503:0 > 0 && v503:0 < 9 && v259:0 > 2 && sum~cons_1~v503:0 = 1 + v503:0 f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v259:0 > 2 && v260:0 > 2 && v503:0 > 9 && sum~cons_1~v503:0 = 1 + v503:0 f_105 -> f_245(v7:0, v12:0, v7:0) :|: FALSE f_105 -> f_245(1 + v12:0, v12:0, 1 + v12:0) :|: v12:0 > 0 && v12:0 < 9 f_105 -> f_245(1 + v12:0, v12:0, 1 + v12:0) :|: v12:0 > 9 ---------------------------------------- (89) Obligation: Rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_245(x, x1, x2) -> f_245(x, x3, 1 + x3) :|: x2 > 2 && x3 > 0 && x3 < 9 && x > 2 && x1 = 1 + x3 f_245(x4, x5, x6) -> f_245(x4, x7, 1 + x7) :|: x4 > 2 && x6 > 2 && x7 > 9 && x5 = 1 + x7 f_105 -> f_245(v7:0, v12:0, v7:0) :|: FALSE f_105 -> f_245(1 + x8, x8, 1 + x8) :|: x8 > 0 && x8 < 9 f_105 -> f_245(1 + x9, x9, 1 + x9) :|: x9 > 9 Start term: f_105 ---------------------------------------- (90) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_245_3,1) (f_105_3,2) ---------------------------------------- (91) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(oldX0 > 2 && oldX2 > 2 && oldX1 = 10); x0 := oldX0; x1 := 8; x2 := 9; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX2 > 2 && oldX3 > 0 && oldX3 < 9 && oldX0 > 2 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX0 > 2 && oldX2 > 2 && oldX3 > 9 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); oldX4 := nondet(); assume(0 = 1); x0 := oldX3; x1 := oldX4; x2 := oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); assume(oldX3 > 0 && oldX3 < 9); x0 := 1 + oldX3; x1 := oldX3; x2 := 1 + oldX3; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); assume(oldX3 > 9); x0 := 1 + oldX3; x1 := oldX3; x2 := 1 + oldX3; TO: 1; ---------------------------------------- (92) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 3, 6, 7, 8 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1 RF for loc. 6: 2*x1 Bound for (chained) transitions 6: 20 Bound for (chained) transitions 7: 4 Bound for (chained) transitions 8: 22 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 3: 1 ---------------------------------------- (93) YES ---------------------------------------- (94) Obligation: Lasso ---------------------------------------- (95) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 75 rulesP rules: f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_247(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_249(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) -> f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_251(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 1 && 2 <= v263 && 3 <= v260 && 3 <= v259 f_255(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_258(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_261(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: v263 = 10 f_264(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: v263 != 10 f_267(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_271(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_275(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_280(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_284(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_288(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: 0 = 0 f_292(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) :|: TRUE f_296(v256, v257, v258, v259, 10, 1, 0, 11, v264, v265, v266, 3, 4) -> f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_300(v256, v257, v258, v259, 10, 1, 0, v264, v265, v266, 3, 11, 4) -> f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: 0 = 0 f_304(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_308(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) :|: TRUE f_312(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 11, 4) -> f_313(v256, v257, v258, v259, 10, 1, 0, 9, v264, v265, v266, 3, 4) :|: TRUE f_313(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) :|: TRUE f_316(v594, v595, v596, v597, 10, 1, 0, 9, v602, v603, v604, 3, 4) -> f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_320(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: 0 = 0 f_323(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) :|: TRUE f_326(v594, v595, v596, v597, 9, 1, 10, 0, v602, v603, v604, 3, 4) -> f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_329(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_332(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_335(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_338(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: 0 = 0 f_341(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) :|: TRUE f_344(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 4) -> f_277(v594, v595, v596, v597, 9, 1, 0, 10, v602, v603, v604, 3, 10, 2, 4) :|: TRUE f_277(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_281(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_285(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_289(v417, v418, v419, v420, v421, 1, 0, v424, v425, v426, v427, 3, 10, 2, 4) -> f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) :|: 0 = 0 f_293(v417, v418, v419, v420, v421, 1, 0, v425, v426, v427, 3, 10, 2, 4) -> f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: 1 + v503 = v421 && 1 <= v503 f_297(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_301(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_305(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_309(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) -> f_243(v417, v418, v419, v420, v421, 1, 0, v503, v425, v426, v427, 3, 10, 2, 4) :|: TRUE f_243(v256, v257, v258, v259, v260, 1, 0, v263, v264, v265, v266, 3, 10, 2, 4) -> f_245(v256, v257, v258, v259, v263, 1, v260, 0, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_268(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: 0 = 0 f_272(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_276(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) -> f_277(v256, v257, v258, v259, v263, 1, 0, v260, v264, v265, v266, 3, 10, 2, 4) :|: TRUE f_105 -> f_106(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_106(v1, v2, 3, 1, 4) -> f_107(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_107(v1, v3, v2, v4, 3, 1, 4) -> f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 f_108(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_109(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_110(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_111(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_112(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE f_113(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 f_114(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v7 f_115(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_117(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: TRUE f_119(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 f_121(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4) -> f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) :|: v7 != 1 && 2 <= v7 f_123(v1, v3, v5, v7, 1, v2, v4, v6, 0, 3, 4, 2) -> f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_125(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE f_127(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 f_129(v1, v3, v5, v7, 1, 0, v2, v4, v6, 3, 4, 2) -> f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: v7 = 10 f_131(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_134(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_137(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_140(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_143(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_146(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_149(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: TRUE f_152(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 f_155(v1, v3, v5, 10, 1, 0, v2, v4, v6, 3, 4) -> f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: 0 = 0 f_158(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_161(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE f_164(v1, v3, v5, 10, 1, 0, 9, v2, v4, v6, 3, 4) -> f_313(v1, v3, v5, 10, 10, 1, 0, 9, v2, v4, v6, 3, 4) :|: TRUE Combined rules. Obtained 5 rulesP rules: f_245(v256:0, v257:0, v258:0, v259:0, 10, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, 8, 1, 9, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v259:0 > 2 && v260:0 > 2 f_105 -> f_245(v1:0, v3:0, v5:0, 10, v503:0, 1, 9, 0, v2:0, v4:0, v6:0, 3, 10, 2, 4) :|: FALSE f_105 -> f_245(v1:0, v3:0, v5:0, 10, 8, 1, 9, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 10, 2, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 0 && v260:0 > 2 && v259:0 > 2 && v503:0 < 9 f_245(v256:0, v257:0, v258:0, v259:0, 1 + v503:0, 1, v260:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) -> f_245(v256:0, v257:0, v258:0, v259:0, v503:0, 1, 1 + v503:0, 0, v264:0, v265:0, v266:0, 3, 10, 2, 4) :|: v503:0 > 9 && v259:0 > 2 && v260:0 > 2 Filtered unneeded arguments: f_245(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_245(x4, x5, x7) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_105 -> f_245(10, v503:0, 9) :|: FALSE f_105 -> f_245(10, 8, 9) :|: TRUE f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v260:0 > 2 && v503:0 > 0 && v503:0 < 9 && v259:0 > 2 && sum~cons_1~v503:0 = 1 + v503:0 f_245(v259:0, sum~cons_1~v503:0, v260:0) -> f_245(v259:0, v503:0, 1 + v503:0) :|: v259:0 > 2 && v260:0 > 2 && v503:0 > 9 && sum~cons_1~v503:0 = 1 + v503:0 ---------------------------------------- (96) Obligation: Rules: f_245(v259:0, cons_10, v260:0) -> f_245(v259:0, 8, 9) :|: v259:0 > 2 && v260:0 > 2 && cons_10 = 10 f_105 -> f_245(10, v503:0, 9) :|: FALSE f_105 -> f_245(10, 8, 9) :|: TRUE f_245(x, x1, x2) -> f_245(x, x3, 1 + x3) :|: x2 > 2 && x3 > 0 && x3 < 9 && x > 2 && x1 = 1 + x3 f_245(x4, x5, x6) -> f_245(x4, x7, 1 + x7) :|: x4 > 2 && x6 > 2 && x7 > 9 && x5 = 1 + x7 Start term: f_105 ---------------------------------------- (97) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_245_3,1) (f_105_3,2) ---------------------------------------- (98) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(oldX0 > 2 && oldX2 > 2 && oldX1 = 10); x0 := oldX0; x1 := 8; x2 := 9; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); assume(0 = 1); x0 := 10; x1 := oldX3; x2 := 9; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; assume(0 = 0); x0 := 10; x1 := 8; x2 := 9; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX2 > 2 && oldX3 > 0 && oldX3 < 9 && oldX0 > 2 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX1 - 1; assume(oldX0 > 2 && oldX2 > 2 && oldX3 > 9 && oldX1 = 1 + oldX3); x0 := oldX0; x1 := oldX1 - 1; x2 := 1 + oldX3; TO: 1; ---------------------------------------- (99) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 7 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1 RF for loc. 6: 2*x1 Bound for (chained) transitions 5: 20 Bound for (chained) transitions 6: 4 Bound for (chained) transitions 7: 22 - Rank function 2: RF for loc. 5: 1 RF for loc. 6: 0 Bound for (chained) transitions 2: 1 ---------------------------------------- (100) YES