37.08/10.34 NO 37.08/10.35 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 37.08/10.35 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 37.08/10.35 37.08/10.35 37.08/10.35 Termination of the given C Problem could be disproven: 37.08/10.35 37.08/10.35 (0) C Problem 37.08/10.35 (1) CToLLVMProof [EQUIVALENT, 163 ms] 37.08/10.35 (2) LLVM problem 37.08/10.35 (3) LLVMToTerminationGraphProof [EQUIVALENT, 571 ms] 37.08/10.35 (4) LLVM Symbolic Execution Graph 37.08/10.35 (5) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] 37.08/10.35 (6) AND 37.08/10.35 (7) LLVM Symbolic Execution Lasso 37.08/10.35 (8) Lasso2IRS [EQUIVALENT, 121 ms] 37.08/10.35 (9) IntTRS 37.08/10.35 (10) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (11) T2IntSys 37.08/10.35 (12) LLVM Symbolic Execution Lasso 37.08/10.35 (13) Lasso2IRS [EQUIVALENT, 111 ms] 37.08/10.35 (14) IntTRS 37.08/10.35 (15) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (16) T2IntSys 37.08/10.35 (17) LLVM Symbolic Execution Lasso 37.08/10.35 (18) Lasso2IRS [EQUIVALENT, 116 ms] 37.08/10.35 (19) IntTRS 37.08/10.35 (20) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (21) T2IntSys 37.08/10.35 (22) T2 [COMPLETE, 953 ms] 37.08/10.35 (23) NO 37.08/10.35 (24) LLVM Symbolic Execution Lasso 37.08/10.35 (25) Lasso2IRS [EQUIVALENT, 115 ms] 37.08/10.35 (26) IntTRS 37.08/10.35 (27) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (28) T2IntSys 37.08/10.35 (29) LLVM Symbolic Execution Lasso 37.08/10.35 (30) Lasso2IRS [EQUIVALENT, 115 ms] 37.08/10.35 (31) IntTRS 37.08/10.35 (32) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (33) T2IntSys 37.08/10.35 (34) LLVM Symbolic Execution Lasso 37.08/10.35 (35) Lasso2IRS [EQUIVALENT, 130 ms] 37.08/10.35 (36) IntTRS 37.08/10.35 (37) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (38) T2IntSys 37.08/10.35 (39) LLVM Symbolic Execution Lasso 37.08/10.35 (40) Lasso2IRS [EQUIVALENT, 119 ms] 37.08/10.35 (41) IntTRS 37.08/10.35 (42) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (43) T2IntSys 37.08/10.35 (44) LLVM Symbolic Execution Lasso 37.08/10.35 (45) Lasso2IRS [EQUIVALENT, 123 ms] 37.08/10.35 (46) IntTRS 37.08/10.35 (47) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (48) T2IntSys 37.08/10.35 (49) LLVM Symbolic Execution Lasso 37.08/10.35 (50) Lasso2IRS [EQUIVALENT, 118 ms] 37.08/10.35 (51) IntTRS 37.08/10.35 (52) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (53) T2IntSys 37.08/10.35 (54) LLVM Symbolic Execution Lasso 37.08/10.35 (55) Lasso2IRS [EQUIVALENT, 133 ms] 37.08/10.35 (56) IntTRS 37.08/10.35 (57) IRS2T2 [EQUIVALENT, 0 ms] 37.08/10.35 (58) T2IntSys 37.08/10.35 (59) T2 [COMPLETE, 1223 ms] 37.08/10.35 (60) NO 37.08/10.35 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (0) 37.08/10.35 Obligation: 37.08/10.35 c file /export/starexec/sandbox/benchmark/theBenchmark.c 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (1) CToLLVMProof (EQUIVALENT) 37.08/10.35 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (2) 37.08/10.35 Obligation: 37.08/10.35 LLVM Problem 37.08/10.35 37.08/10.35 Aliases: 37.08/10.35 37.08/10.35 Data layout: 37.08/10.35 37.08/10.35 "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" 37.08/10.35 37.08/10.35 Machine: 37.08/10.35 37.08/10.35 "x86_64-pc-linux-gnu" 37.08/10.35 37.08/10.35 Type definitions: 37.08/10.35 37.08/10.35 Global variables: 37.08/10.35 37.08/10.35 Function declarations and definitions: 37.08/10.35 37.08/10.35 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 37.08/10.35 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 37.08/10.35 0: 37.08/10.35 %1 = alloca i32, align 4 37.08/10.35 %i = alloca i32, align 4 37.08/10.35 store 0, %1 37.08/10.35 %2 = call i32 @__VERIFIER_nondet_int() 37.08/10.35 store %2, %i 37.08/10.35 br %3 37.08/10.35 3: 37.08/10.35 %4 = load %i 37.08/10.35 %5 = icmp sgt %4 10 37.08/10.35 br %5, %6, %18 37.08/10.35 6: 37.08/10.35 %7 = load %i 37.08/10.35 %8 = icmp eq %7 25 37.08/10.35 br %8, %9, %10 37.08/10.35 9: 37.08/10.35 store 30, %i 37.08/10.35 br %10 37.08/10.35 10: 37.08/10.35 %11 = load %i 37.08/10.35 %12 = icmp sle %11 30 37.08/10.35 br %12, %13, %16 37.08/10.35 13: 37.08/10.35 %14 = load %i 37.08/10.35 %15 = sub %14 1 37.08/10.35 store %15, %i 37.08/10.35 br %17 37.08/10.35 16: 37.08/10.35 store 20, %i 37.08/10.35 br %17 37.08/10.35 17: 37.08/10.35 br %3 37.08/10.35 18: 37.08/10.35 ret 0 37.08/10.35 37.08/10.35 37.08/10.35 Analyze Termination of all function calls matching the pattern: 37.08/10.35 main() 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (3) LLVMToTerminationGraphProof (EQUIVALENT) 37.08/10.35 Constructed symbolic execution graph for LLVM program and proved memory safety. 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (4) 37.08/10.35 Obligation: 37.08/10.35 SE Graph 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (5) SymbolicExecutionGraphToLassoProof (COMPLETE) 37.08/10.35 Converted SEGraph to 10 dependent lassos. 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (6) 37.08/10.35 Complex Obligation (AND) 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (7) 37.08/10.35 Obligation: 37.08/10.35 Lasso 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (8) Lasso2IRS (EQUIVALENT) 37.08/10.35 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.35 Generated rules. Obtained 76 rulesP rules: 37.08/10.35 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.35 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.35 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.35 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.35 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.35 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.35 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.35 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.35 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.35 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.35 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.35 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.35 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.35 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.35 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.35 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_103(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: 30 < v5 37.08/10.35 f_103(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_106(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_106(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_109(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_109(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_112(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.35 f_112(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_115(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.35 f_115(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_118(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.35 f_118(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_121(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_121(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_124(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_124(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_127(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_127(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_131(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_131(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_135(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_135(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_139(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_139(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_142(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_142(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_146(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_146(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_150(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_150(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_154(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_154(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_158(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_158(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_162(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_162(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_166(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_166(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_175(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 25, 20, 29, 19, 28, 4) :|: TRUE 37.08/10.35 f_175(v115, v116, v117, v118, 1, 0, v121, v122, v123, 3, 25, 20, 29, 19, 28, 4) -> f_209(v115, v116, v117, v118, 1, 0, v121, v122, v123, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 Combined rules. Obtained 5 rulesP rules: 37.08/10.35 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 && v292:0 > 9 && v292:0 < 24 && v292:0 < 29 37.08/10.35 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v292:0 > 24 && v292:0 < 29 && v219:0 > 11 37.08/10.35 f_78 -> f_211(v1:0, v3:0, v5:0, 20, 1, 0, 19, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v5:0 > 30 && v3:0 > 0 && v1:0 > 0 && v5:0 < 25 37.08/10.35 f_78 -> f_211(v1:0, v3:0, v5:0, 20, 1, 0, 19, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v5:0 > 30 && v3:0 > 0 && v1:0 > 0 37.08/10.35 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 25, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 29, 1, 0, 28, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 37.08/10.35 Filtered unneeded arguments: 37.08/10.35 f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) 37.08/10.35 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 37.08/10.35 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 < 29 && v219:0 > 11 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_78 -> f_211(20, 19) :|: TRUE 37.08/10.35 f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (9) 37.08/10.35 Obligation: 37.08/10.35 Rules: 37.08/10.35 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 37.08/10.35 f_78 -> f_211(20, 19) :|: TRUE 37.08/10.35 f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 37.08/10.35 Start term: f_78 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (10) IRS2T2 (EQUIVALENT) 37.08/10.35 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.35 37.08/10.35 (f_211_2,1) 37.08/10.35 (f_78_2,2) 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (11) 37.08/10.35 Obligation: 37.08/10.35 START: 2; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 oldX2 := oldX1 - 1; 37.08/10.35 assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); 37.08/10.35 x0 := 1 + oldX2; 37.08/10.35 x1 := oldX1 - 1; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 oldX2 := oldX1 - 1; 37.08/10.35 assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); 37.08/10.35 x0 := 1 + oldX2; 37.08/10.35 x1 := oldX1 - 1; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 FROM: 2; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 assume(0 = 0); 37.08/10.35 x0 := 20; 37.08/10.35 x1 := 19; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 assume(oldX0 > 11 && oldX1 = 25); 37.08/10.35 x0 := 29; 37.08/10.35 x1 := 28; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (12) 37.08/10.35 Obligation: 37.08/10.35 Lasso 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (13) Lasso2IRS (EQUIVALENT) 37.08/10.35 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.35 Generated rules. Obtained 66 rulesP rules: 37.08/10.35 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.35 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.35 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.35 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.35 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.35 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.35 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.35 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.35 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.35 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.35 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.35 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.35 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.35 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.35 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.35 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: v5 <= 30 37.08/10.35 f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.35 f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: TRUE 37.08/10.35 f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.35 f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: 1 + v7 = v5 && 10 <= v7 && v7 <= 29 37.08/10.35 f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.35 f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.35 f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.35 f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_171(v1, v3, v5, v5, 1, 0, v7, v2, v4, 3, 25, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 f_171(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 25, 11, 30, 10, 29, 4) -> f_179(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 f_179(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) -> f_212(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 Combined rules. Obtained 5 rulesP rules: 37.08/10.35 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 10 && v3:0 > 0 && v1:0 > 0 && v7:0 < 24 && v7:0 < 30 37.08/10.35 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 24 && v3:0 > 0 && v1:0 > 0 && v7:0 < 30 37.08/10.35 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 > 10 && v292:0 < 29 && v292:0 < 24 37.08/10.35 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 < 29 && v292:0 > 24 37.08/10.35 f_220(v236:0, v237:0, v238:0, 25, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, 28, 1, 0, 29, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 Filtered unneeded arguments: 37.08/10.35 f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) 37.08/10.35 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 37.08/10.35 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.35 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 37.08/10.35 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (14) 37.08/10.35 Obligation: 37.08/10.35 Rules: 37.08/10.35 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.35 f_78 -> f_220(x) :|: x > 24 && x < 30 37.08/10.35 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 37.08/10.35 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.35 Start term: f_78 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (15) IRS2T2 (EQUIVALENT) 37.08/10.35 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.35 37.08/10.35 (f_78_1,1) 37.08/10.35 (f_220_1,2) 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (16) 37.08/10.35 Obligation: 37.08/10.35 START: 1; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := nondet(); 37.08/10.35 assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); 37.08/10.35 x0 := oldX1; 37.08/10.35 TO: 2; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := nondet(); 37.08/10.35 assume(oldX1 > 24 && oldX1 < 30); 37.08/10.35 x0 := oldX1; 37.08/10.35 TO: 2; 37.08/10.35 37.08/10.35 FROM: 2; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := oldX0 - 1; 37.08/10.35 assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); 37.08/10.35 x0 := oldX0 - 1; 37.08/10.35 TO: 2; 37.08/10.35 37.08/10.35 FROM: 2; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := oldX0 - 1; 37.08/10.35 assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); 37.08/10.35 x0 := oldX0 - 1; 37.08/10.35 TO: 2; 37.08/10.35 37.08/10.35 FROM: 2; 37.08/10.35 oldX0 := x0; 37.08/10.35 assume(0 = 0 && oldX0 = 25); 37.08/10.35 x0 := 28; 37.08/10.35 TO: 2; 37.08/10.35 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (17) 37.08/10.35 Obligation: 37.08/10.35 Lasso 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (18) Lasso2IRS (EQUIVALENT) 37.08/10.35 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.35 Generated rules. Obtained 64 rulesP rules: 37.08/10.35 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.35 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.35 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.35 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.35 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.35 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.35 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.35 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.35 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.35 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.35 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.35 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: v5 = 25 37.08/10.35 f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.35 f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) -> f_101(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_101(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) -> f_104(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_104(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_107(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_107(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_110(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.35 f_110(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_113(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_113(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_116(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_116(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_119(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.35 f_119(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_122(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.35 f_122(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_244(v1, v3, 25, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.35 Combined rules. Obtained 4 rulesP rules: 37.08/10.35 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 && v292:0 > 9 && v292:0 < 24 && v292:0 < 29 37.08/10.35 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v292:0 > 24 && v292:0 < 29 && v219:0 > 11 37.08/10.35 f_78 -> f_211(v1:0, v3:0, 25, 29, 1, 0, 28, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v3:0 > 0 && v1:0 > 0 37.08/10.35 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 25, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 29, 1, 0, 28, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 37.08/10.35 Filtered unneeded arguments: 37.08/10.35 f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) 37.08/10.35 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 37.08/10.35 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 < 29 && v219:0 > 11 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_78 -> f_211(29, 28) :|: TRUE 37.08/10.35 f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (19) 37.08/10.35 Obligation: 37.08/10.35 Rules: 37.08/10.35 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.35 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 37.08/10.35 f_78 -> f_211(29, 28) :|: TRUE 37.08/10.35 f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 37.08/10.35 Start term: f_78 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (20) IRS2T2 (EQUIVALENT) 37.08/10.35 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.35 37.08/10.35 (f_211_2,1) 37.08/10.35 (f_78_2,2) 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (21) 37.08/10.35 Obligation: 37.08/10.35 START: 2; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 oldX2 := oldX1 - 1; 37.08/10.35 assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); 37.08/10.35 x0 := 1 + oldX2; 37.08/10.35 x1 := oldX1 - 1; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 oldX2 := oldX1 - 1; 37.08/10.35 assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); 37.08/10.35 x0 := 1 + oldX2; 37.08/10.35 x1 := oldX1 - 1; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 FROM: 2; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 assume(0 = 0); 37.08/10.35 x0 := 29; 37.08/10.35 x1 := 28; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 FROM: 1; 37.08/10.35 oldX0 := x0; 37.08/10.35 oldX1 := x1; 37.08/10.35 assume(oldX0 > 11 && oldX1 = 25); 37.08/10.35 x0 := 29; 37.08/10.35 x1 := 28; 37.08/10.35 TO: 1; 37.08/10.35 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (22) T2 (COMPLETE) 37.08/10.35 Found this recurrent set for cutpoint 5: 28 <= x0 and x0 <= 28 and 27 <= x1 and x1 <= 27 and x0-x1 <= 1 and x1-x0 <= -1 and x0+x1 <= 55 and 55 <= x0+x1 and x1+-25 <= 0 and -x0+12 <= 0 and -x1+25 <= 0 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (23) 37.08/10.35 NO 37.08/10.35 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (24) 37.08/10.35 Obligation: 37.08/10.35 Lasso 37.08/10.35 ---------------------------------------- 37.08/10.35 37.08/10.35 (25) Lasso2IRS (EQUIVALENT) 37.08/10.35 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.35 Generated rules. Obtained 76 rulesP rules: 37.08/10.35 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.35 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.35 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.35 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.35 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.35 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.35 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.35 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.35 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.35 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.35 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.35 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.35 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.35 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.35 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.35 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.35 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.35 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.35 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.35 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.35 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.35 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.35 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.35 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.35 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.35 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.35 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.35 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.35 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.35 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_103(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: 30 < v5 37.08/10.35 f_103(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_106(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_106(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_109(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_109(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_112(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.35 f_112(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_115(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.35 f_115(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_118(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.35 f_118(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_121(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_121(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_124(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_124(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_127(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_127(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_131(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_131(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_135(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_135(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_139(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.35 f_139(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_142(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.35 f_142(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_146(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.36 f_146(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_150(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.36 f_150(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_154(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.36 f_154(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_158(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.36 f_158(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_162(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.36 f_162(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_166(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.36 f_166(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_175(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 25, 20, 29, 19, 28, 4) :|: TRUE 37.08/10.36 f_175(v115, v116, v117, v118, 1, 0, v121, v122, v123, 3, 25, 20, 29, 19, 28, 4) -> f_209(v115, v116, v117, v118, 1, 0, v121, v122, v123, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.36 Combined rules. Obtained 5 rulesP rules: 37.08/10.36 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 && v292:0 > 9 && v292:0 < 24 && v292:0 < 29 37.08/10.36 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v292:0 > 24 && v292:0 < 29 && v219:0 > 11 37.08/10.36 f_78 -> f_211(v1:0, v3:0, v5:0, 20, 1, 0, 19, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v5:0 > 30 && v3:0 > 0 && v1:0 > 0 && v5:0 < 25 37.08/10.36 f_78 -> f_211(v1:0, v3:0, v5:0, 20, 1, 0, 19, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v5:0 > 30 && v3:0 > 0 && v1:0 > 0 37.08/10.36 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 25, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 29, 1, 0, 28, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 37.08/10.36 Filtered unneeded arguments: 37.08/10.36 f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) 37.08/10.36 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 37.08/10.36 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.36 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 < 29 && v219:0 > 11 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.36 f_78 -> f_211(20, 19) :|: TRUE 37.08/10.36 f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (26) 37.08/10.36 Obligation: 37.08/10.36 Rules: 37.08/10.36 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.36 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 37.08/10.36 f_78 -> f_211(20, 19) :|: TRUE 37.08/10.36 f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 37.08/10.36 Start term: f_78 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (27) IRS2T2 (EQUIVALENT) 37.08/10.36 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.36 37.08/10.36 (f_211_2,1) 37.08/10.36 (f_78_2,2) 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (28) 37.08/10.36 Obligation: 37.08/10.36 START: 2; 37.08/10.36 37.08/10.36 FROM: 1; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := x1; 37.08/10.36 oldX2 := oldX1 - 1; 37.08/10.36 assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); 37.08/10.36 x0 := 1 + oldX2; 37.08/10.36 x1 := oldX1 - 1; 37.08/10.36 TO: 1; 37.08/10.36 37.08/10.36 FROM: 1; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := x1; 37.08/10.36 oldX2 := oldX1 - 1; 37.08/10.36 assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); 37.08/10.36 x0 := 1 + oldX2; 37.08/10.36 x1 := oldX1 - 1; 37.08/10.36 TO: 1; 37.08/10.36 37.08/10.36 FROM: 2; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := x1; 37.08/10.36 assume(0 = 0); 37.08/10.36 x0 := 20; 37.08/10.36 x1 := 19; 37.08/10.36 TO: 1; 37.08/10.36 37.08/10.36 FROM: 1; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := x1; 37.08/10.36 assume(oldX0 > 11 && oldX1 = 25); 37.08/10.36 x0 := 29; 37.08/10.36 x1 := 28; 37.08/10.36 TO: 1; 37.08/10.36 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (29) 37.08/10.36 Obligation: 37.08/10.36 Lasso 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (30) Lasso2IRS (EQUIVALENT) 37.08/10.36 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.36 Generated rules. Obtained 66 rulesP rules: 37.08/10.36 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.36 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.36 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.36 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.36 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.36 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.36 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.36 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.36 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.36 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.36 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.36 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.36 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.36 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.36 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.36 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.36 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.36 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.36 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.36 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.36 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.36 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.36 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.36 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.36 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.36 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.36 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.36 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.36 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.36 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.36 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.36 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.36 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.36 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.36 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: v5 <= 30 37.08/10.36 f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.36 f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: TRUE 37.08/10.36 f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.36 f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: 1 + v7 = v5 && 10 <= v7 && v7 <= 29 37.08/10.36 f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.36 f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.36 f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.36 f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_171(v1, v3, v5, v5, 1, 0, v7, v2, v4, 3, 25, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.36 f_171(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 25, 11, 30, 10, 29, 4) -> f_179(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.36 f_179(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) -> f_212(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.36 Combined rules. Obtained 5 rulesP rules: 37.08/10.36 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 10 && v3:0 > 0 && v1:0 > 0 && v7:0 < 24 && v7:0 < 30 37.08/10.36 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 24 && v3:0 > 0 && v1:0 > 0 && v7:0 < 30 37.08/10.36 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 > 10 && v292:0 < 29 && v292:0 < 24 37.08/10.36 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 < 29 && v292:0 > 24 37.08/10.36 f_220(v236:0, v237:0, v238:0, 25, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, 28, 1, 0, 29, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.36 Filtered unneeded arguments: 37.08/10.36 f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) 37.08/10.36 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 37.08/10.36 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.36 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 37.08/10.36 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.36 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.36 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (31) 37.08/10.36 Obligation: 37.08/10.36 Rules: 37.08/10.36 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.36 f_78 -> f_220(x) :|: x > 24 && x < 30 37.08/10.36 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.36 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 37.08/10.36 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.36 Start term: f_78 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (32) IRS2T2 (EQUIVALENT) 37.08/10.36 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.36 37.08/10.36 (f_78_1,1) 37.08/10.36 (f_220_1,2) 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (33) 37.08/10.36 Obligation: 37.08/10.36 START: 1; 37.08/10.36 37.08/10.36 FROM: 1; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := nondet(); 37.08/10.36 assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); 37.08/10.36 x0 := oldX1; 37.08/10.36 TO: 2; 37.08/10.36 37.08/10.36 FROM: 1; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := nondet(); 37.08/10.36 assume(oldX1 > 24 && oldX1 < 30); 37.08/10.36 x0 := oldX1; 37.08/10.36 TO: 2; 37.08/10.36 37.08/10.36 FROM: 2; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := oldX0 - 1; 37.08/10.36 assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); 37.08/10.36 x0 := oldX0 - 1; 37.08/10.36 TO: 2; 37.08/10.36 37.08/10.36 FROM: 2; 37.08/10.36 oldX0 := x0; 37.08/10.36 oldX1 := oldX0 - 1; 37.08/10.36 assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); 37.08/10.36 x0 := oldX0 - 1; 37.08/10.36 TO: 2; 37.08/10.36 37.08/10.36 FROM: 2; 37.08/10.36 oldX0 := x0; 37.08/10.36 assume(0 = 0 && oldX0 = 25); 37.08/10.36 x0 := 28; 37.08/10.36 TO: 2; 37.08/10.36 37.08/10.36 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (34) 37.08/10.36 Obligation: 37.08/10.36 Lasso 37.08/10.36 ---------------------------------------- 37.08/10.36 37.08/10.36 (35) Lasso2IRS (EQUIVALENT) 37.08/10.36 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.36 Generated rules. Obtained 64 rulesP rules: 37.08/10.36 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.36 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.36 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.36 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.36 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.36 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.36 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.36 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.36 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.36 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.36 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.36 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.36 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.36 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.36 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.36 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.36 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.36 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.36 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.36 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.36 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.36 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.36 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.36 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.36 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.36 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.36 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.36 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.36 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.36 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.36 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.36 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.36 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.36 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: v5 = 25 37.08/10.36 f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.36 f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 37.08/10.36 f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) -> f_101(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 37.08/10.36 f_101(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) -> f_104(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_104(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_107(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_107(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_110(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.36 f_110(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_113(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_113(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_116(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.36 f_116(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_119(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.36 f_119(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_122(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.36 f_122(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_244(v1, v3, 25, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.36 Combined rules. Obtained 4 rulesP rules: 37.08/10.36 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 && v292:0 > 9 && v292:0 < 24 && v292:0 < 29 37.08/10.36 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v292:0 > 24 && v292:0 < 29 && v219:0 > 11 37.08/10.37 f_78 -> f_211(v1:0, v3:0, 25, 29, 1, 0, 28, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v3:0 > 0 && v1:0 > 0 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 25, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 29, 1, 0, 28, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 37.08/10.37 Filtered unneeded arguments: 37.08/10.37 f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) 37.08/10.37 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 < 29 && v219:0 > 11 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_78 -> f_211(29, 28) :|: TRUE 37.08/10.37 f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (36) 37.08/10.37 Obligation: 37.08/10.37 Rules: 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 37.08/10.37 f_78 -> f_211(29, 28) :|: TRUE 37.08/10.37 f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 37.08/10.37 Start term: f_78 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (37) IRS2T2 (EQUIVALENT) 37.08/10.37 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.37 37.08/10.37 (f_211_2,1) 37.08/10.37 (f_78_2,2) 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (38) 37.08/10.37 Obligation: 37.08/10.37 START: 2; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 oldX2 := oldX1 - 1; 37.08/10.37 assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); 37.08/10.37 x0 := 1 + oldX2; 37.08/10.37 x1 := oldX1 - 1; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 oldX2 := oldX1 - 1; 37.08/10.37 assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); 37.08/10.37 x0 := 1 + oldX2; 37.08/10.37 x1 := oldX1 - 1; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 assume(0 = 0); 37.08/10.37 x0 := 29; 37.08/10.37 x1 := 28; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 assume(oldX0 > 11 && oldX1 = 25); 37.08/10.37 x0 := 29; 37.08/10.37 x1 := 28; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (39) 37.08/10.37 Obligation: 37.08/10.37 Lasso 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (40) Lasso2IRS (EQUIVALENT) 37.08/10.37 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.37 Generated rules. Obtained 76 rulesP rules: 37.08/10.37 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.37 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.37 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.37 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.37 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.37 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.37 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.37 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.37 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.37 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.37 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.37 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.37 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.37 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.37 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.37 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_103(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: 30 < v5 37.08/10.37 f_103(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_106(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_106(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_109(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.37 f_109(v1, v3, v5, 1, 0, v2, v4, 3, 4, 31) -> f_112(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.37 f_112(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_115(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.37 f_115(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_118(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) :|: TRUE 37.08/10.37 f_118(v1, v3, v5, 1, 0, v2, v4, 20, 3, 4, 31) -> f_121(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_121(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_124(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_124(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_127(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.37 f_127(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_131(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_131(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_135(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_135(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_139(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.37 f_139(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_142(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_142(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_146(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_146(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_150(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.37 f_150(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_154(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_154(v1, v3, v5, 20, 1, 0, v2, v4, 3, 4, 31) -> f_158(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: 0 = 0 37.08/10.37 f_158(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_162(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.37 f_162(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_166(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) :|: TRUE 37.08/10.37 f_166(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 4, 31) -> f_175(v1, v3, v5, 20, 1, 0, 19, v2, v4, 3, 25, 20, 29, 19, 28, 4) :|: TRUE 37.08/10.37 f_175(v115, v116, v117, v118, 1, 0, v121, v122, v123, 3, 25, 20, 29, 19, 28, 4) -> f_209(v115, v116, v117, v118, 1, 0, v121, v122, v123, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 Combined rules. Obtained 5 rulesP rules: 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 && v292:0 > 9 && v292:0 < 24 && v292:0 < 29 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v292:0 > 24 && v292:0 < 29 && v219:0 > 11 37.08/10.37 f_78 -> f_211(v1:0, v3:0, v5:0, 20, 1, 0, 19, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v5:0 > 30 && v3:0 > 0 && v1:0 > 0 && v5:0 < 25 37.08/10.37 f_78 -> f_211(v1:0, v3:0, v5:0, 20, 1, 0, 19, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v5:0 > 30 && v3:0 > 0 && v1:0 > 0 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 25, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 29, 1, 0, 28, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 37.08/10.37 Filtered unneeded arguments: 37.08/10.37 f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) 37.08/10.37 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 < 29 && v219:0 > 11 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_78 -> f_211(20, 19) :|: TRUE 37.08/10.37 f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (41) 37.08/10.37 Obligation: 37.08/10.37 Rules: 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 37.08/10.37 f_78 -> f_211(20, 19) :|: TRUE 37.08/10.37 f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 37.08/10.37 Start term: f_78 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (42) IRS2T2 (EQUIVALENT) 37.08/10.37 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.37 37.08/10.37 (f_211_2,1) 37.08/10.37 (f_78_2,2) 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (43) 37.08/10.37 Obligation: 37.08/10.37 START: 2; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 oldX2 := oldX1 - 1; 37.08/10.37 assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); 37.08/10.37 x0 := 1 + oldX2; 37.08/10.37 x1 := oldX1 - 1; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 oldX2 := oldX1 - 1; 37.08/10.37 assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); 37.08/10.37 x0 := 1 + oldX2; 37.08/10.37 x1 := oldX1 - 1; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 assume(0 = 0); 37.08/10.37 x0 := 20; 37.08/10.37 x1 := 19; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 assume(oldX0 > 11 && oldX1 = 25); 37.08/10.37 x0 := 29; 37.08/10.37 x1 := 28; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (44) 37.08/10.37 Obligation: 37.08/10.37 Lasso 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (45) Lasso2IRS (EQUIVALENT) 37.08/10.37 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.37 Generated rules. Obtained 66 rulesP rules: 37.08/10.37 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.37 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.37 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.37 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.37 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.37 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.37 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.37 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.37 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.37 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.37 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.37 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.37 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.37 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.37 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.37 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: v5 <= 30 37.08/10.37 f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.37 f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: TRUE 37.08/10.37 f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.37 f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: 1 + v7 = v5 && 10 <= v7 && v7 <= 29 37.08/10.37 f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.37 f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.37 f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.37 f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_171(v1, v3, v5, v5, 1, 0, v7, v2, v4, 3, 25, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_171(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 25, 11, 30, 10, 29, 4) -> f_179(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_179(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) -> f_212(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 Combined rules. Obtained 5 rulesP rules: 37.08/10.37 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 10 && v3:0 > 0 && v1:0 > 0 && v7:0 < 24 && v7:0 < 30 37.08/10.37 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 24 && v3:0 > 0 && v1:0 > 0 && v7:0 < 30 37.08/10.37 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 > 10 && v292:0 < 29 && v292:0 < 24 37.08/10.37 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 < 29 && v292:0 > 24 37.08/10.37 f_220(v236:0, v237:0, v238:0, 25, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, 28, 1, 0, 29, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 Filtered unneeded arguments: 37.08/10.37 f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) 37.08/10.37 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 37.08/10.37 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.37 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 37.08/10.37 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (46) 37.08/10.37 Obligation: 37.08/10.37 Rules: 37.08/10.37 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.37 f_78 -> f_220(x) :|: x > 24 && x < 30 37.08/10.37 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 37.08/10.37 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.37 Start term: f_78 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (47) IRS2T2 (EQUIVALENT) 37.08/10.37 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.37 37.08/10.37 (f_78_1,1) 37.08/10.37 (f_220_1,2) 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (48) 37.08/10.37 Obligation: 37.08/10.37 START: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := nondet(); 37.08/10.37 assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); 37.08/10.37 x0 := oldX1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := nondet(); 37.08/10.37 assume(oldX1 > 24 && oldX1 < 30); 37.08/10.37 x0 := oldX1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := oldX0 - 1; 37.08/10.37 assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); 37.08/10.37 x0 := oldX0 - 1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := oldX0 - 1; 37.08/10.37 assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); 37.08/10.37 x0 := oldX0 - 1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 assume(0 = 0 && oldX0 = 25); 37.08/10.37 x0 := 28; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (49) 37.08/10.37 Obligation: 37.08/10.37 Lasso 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (50) Lasso2IRS (EQUIVALENT) 37.08/10.37 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.37 Generated rules. Obtained 66 rulesP rules: 37.08/10.37 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.37 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.37 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.37 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.37 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.37 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.37 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.37 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.37 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.37 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.37 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.37 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) :|: v5 != 25 37.08/10.37 f_94(v1, v3, v5, 1, v2, v4, 0, 3, 25, 4, 11) -> f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.37 f_96(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: TRUE 37.08/10.37 f_98(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) :|: 0 = 0 37.08/10.37 f_100(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11) -> f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: v5 <= 30 37.08/10.37 f_102(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.37 f_105(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: TRUE 37.08/10.37 f_108(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) :|: 0 = 0 37.08/10.37 f_111(v1, v3, v5, 1, 0, v2, v4, 3, 25, 4, 11, 30) -> f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: 1 + v7 = v5 && 10 <= v7 && v7 <= 29 37.08/10.37 f_114(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.37 f_117(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.37 f_120(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) :|: TRUE 37.08/10.37 f_123(v1, v3, v5, 1, 0, v7, v2, v4, 3, 25, 4, 11, 30, 10, 29) -> f_171(v1, v3, v5, v5, 1, 0, v7, v2, v4, 3, 25, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_171(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 25, 11, 30, 10, 29, 4) -> f_179(v87, v88, v89, v90, 1, 0, v93, v94, v95, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_179(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) -> f_212(v135, v136, v137, v138, 1, 0, v141, v142, v143, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 Combined rules. Obtained 5 rulesP rules: 37.08/10.37 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 10 && v3:0 > 0 && v1:0 > 0 && v7:0 < 24 && v7:0 < 30 37.08/10.37 f_78 -> f_220(v1:0, v3:0, 1 + v7:0, v7:0, 1, 0, 1 + v7:0, 3 + v1:0, 3 + v3:0, 3, 12, 30, 11, 29, 4) :|: v7:0 > 24 && v3:0 > 0 && v1:0 > 0 && v7:0 < 30 37.08/10.37 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 > 10 && v292:0 < 29 && v292:0 < 24 37.08/10.37 f_220(v236:0, v237:0, v238:0, 1 + v292:0, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, v292:0, 1, 0, 1 + v292:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: v292:0 < 29 && v292:0 > 24 37.08/10.37 f_220(v236:0, v237:0, v238:0, 25, 1, 0, v239:0, v243:0, v244:0, 3, 12, 30, 11, 29, 4) -> f_220(v236:0, v237:0, v238:0, 28, 1, 0, 29, v243:0, v244:0, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 Filtered unneeded arguments: 37.08/10.37 f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) 37.08/10.37 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 37.08/10.37 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.37 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 37.08/10.37 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (51) 37.08/10.37 Obligation: 37.08/10.37 Rules: 37.08/10.37 f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 37.08/10.37 f_78 -> f_220(x) :|: x > 24 && x < 30 37.08/10.37 f_220(sum~cons_1~v292:0) -> f_220(v292:0) :|: v292:0 < 29 && v292:0 < 24 && v292:0 > 10 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 37.08/10.37 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 37.08/10.37 Start term: f_78 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (52) IRS2T2 (EQUIVALENT) 37.08/10.37 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.37 37.08/10.37 (f_78_1,1) 37.08/10.37 (f_220_1,2) 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (53) 37.08/10.37 Obligation: 37.08/10.37 START: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := nondet(); 37.08/10.37 assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); 37.08/10.37 x0 := oldX1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := nondet(); 37.08/10.37 assume(oldX1 > 24 && oldX1 < 30); 37.08/10.37 x0 := oldX1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := oldX0 - 1; 37.08/10.37 assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); 37.08/10.37 x0 := oldX0 - 1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := oldX0 - 1; 37.08/10.37 assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); 37.08/10.37 x0 := oldX0 - 1; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 assume(0 = 0 && oldX0 = 25); 37.08/10.37 x0 := 28; 37.08/10.37 TO: 2; 37.08/10.37 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (54) 37.08/10.37 Obligation: 37.08/10.37 Lasso 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (55) Lasso2IRS (EQUIVALENT) 37.08/10.37 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 37.08/10.37 Generated rules. Obtained 64 rulesP rules: 37.08/10.37 f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_212(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 30, 10, 29, 4) :|: TRUE 37.08/10.37 f_212(v236, v237, v238, v239, 1, 0, v242, v243, v244, 3, 11, 30, 10, 29, 4) -> f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) :|: 0 = 0 37.08/10.37 f_213(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 11, 30, 10, 29, 4) -> f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 10 < v242 && 12 <= v239 37.08/10.37 f_214(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_216(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_218(v236, v237, v238, v242, 1, v239, 0, v243, v244, 3, 12, 30, 11, 29, 4) -> f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) :|: v242 = 25 37.08/10.37 f_220(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 12, 30, 11, 29, 4) -> f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: v242 != 25 37.08/10.37 f_221(v236, v237, v238, 25, 1, 0, 26, v243, v244, 3, 4) -> f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_223(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_225(v236, v237, v238, 25, 1, 26, v243, v244, 0, 3, 4) -> f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_228(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_230(v236, v237, v238, 25, 1, 26, v243, v244, 0, 30, 3, 4) -> f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_232(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_234(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_236(v236, v237, v238, 25, 1, 30, 26, v243, v244, 0, 3, 4) -> f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_238(v236, v237, v238, 25, 1, 30, v243, v244, 0, 3, 4) -> f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_240(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_242(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_243(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) -> f_244(v236, v237, v238, 25, 1, 30, 29, v243, v244, 0, 3, 4) :|: TRUE 37.08/10.37 f_244(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_245(v322, v323, v324, 25, 1, 30, 29, v329, v330, 0, 3, 4) -> f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_246(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_247(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) :|: TRUE 37.08/10.37 f_248(v322, v323, v324, 29, 1, 25, 30, v329, v330, 0, 3, 4) -> f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_249(v322, v323, v324, 29, 1, 30, v329, v330, 0, 3, 4) -> f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: 0 = 0 37.08/10.37 f_250(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) :|: TRUE 37.08/10.37 f_251(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 4) -> f_227(v322, v323, v324, 29, 1, 0, 30, v329, v330, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_227(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_229(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: 0 = 0 37.08/10.37 f_231(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_233(v261, v262, v263, v264, 1, 0, v267, v268, v269, 3, 25, 11, 29, 12, 30, 4) -> f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_235(v261, v262, v263, v264, 1, 0, v268, v269, 3, 25, 11, 29, 4) -> f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: 1 + v292 = v264 && 10 <= v292 && v292 <= 28 37.08/10.37 f_237(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_239(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) :|: TRUE 37.08/10.37 f_241(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 25, 11, 29, 4, 10, 28) -> f_209(v261, v262, v263, v264, 1, 0, v292, v268, v269, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_209(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) -> f_211(v216, v217, v218, v219, 1, 0, v222, v223, v224, 3, 11, 29, 10, 28, 4) :|: TRUE 37.08/10.37 f_222(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: 0 = 0 37.08/10.37 f_224(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) :|: TRUE 37.08/10.37 f_226(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 12, 30, 11, 29, 4) -> f_227(v236, v237, v238, v242, 1, 0, v239, v243, v244, 3, 25, 11, 29, 12, 30, 4) :|: TRUE 37.08/10.37 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 37.08/10.37 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 37.08/10.37 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE 37.08/10.37 f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 37.08/10.37 f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) :|: 10 < v5 37.08/10.37 f_86(v1, v3, v5, v2, v4, 0, 3, 1, 4, 11) -> f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_88(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: TRUE 37.08/10.37 f_90(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) :|: 0 = 0 37.08/10.37 f_92(v1, v3, v5, 1, v2, v4, 0, 3, 4, 11) -> f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: v5 = 25 37.08/10.37 f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.37 f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) -> f_101(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 37.08/10.37 f_101(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) -> f_104(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_104(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_107(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_107(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_110(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.37 f_110(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_113(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_113(v1, v3, 25, 1, 30, v2, v4, 0, 3, 4) -> f_116(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: 0 = 0 37.08/10.37 f_116(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_119(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.37 f_119(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_122(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.37 f_122(v1, v3, 25, 1, 30, 29, v2, v4, 0, 3, 4) -> f_244(v1, v3, 25, 25, 1, 30, 29, v2, v4, 0, 3, 4) :|: TRUE 37.08/10.37 Combined rules. Obtained 4 rulesP rules: 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 && v292:0 > 9 && v292:0 < 24 && v292:0 < 29 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 1 + v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 1 + v292:0, 1, 0, v292:0, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v292:0 > 24 && v292:0 < 29 && v219:0 > 11 37.08/10.37 f_78 -> f_211(v1:0, v3:0, 25, 29, 1, 0, 28, 3 + v1:0, 3 + v3:0, 3, 11, 29, 10, 28, 4) :|: v3:0 > 0 && v1:0 > 0 37.08/10.37 f_211(v216:0, v217:0, v218:0, v219:0, 1, 0, 25, v223:0, v224:0, 3, 11, 29, 10, 28, 4) -> f_211(v216:0, v217:0, v218:0, 29, 1, 0, 28, v223:0, v224:0, 3, 11, 29, 10, 28, 4) :|: v219:0 > 11 37.08/10.37 Filtered unneeded arguments: 37.08/10.37 f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) 37.08/10.37 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 < 29 && v219:0 > 11 && v292:0 > 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_78 -> f_211(29, 28) :|: TRUE 37.08/10.37 f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (56) 37.08/10.37 Obligation: 37.08/10.37 Rules: 37.08/10.37 f_211(v219:0, sum~cons_1~v292:0) -> f_211(1 + v292:0, v292:0) :|: v292:0 > 9 && v219:0 > 11 && v292:0 < 29 && v292:0 < 24 && sum~cons_1~v292:0 = 1 + v292:0 37.08/10.37 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 37.08/10.37 f_78 -> f_211(29, 28) :|: TRUE 37.08/10.37 f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 37.08/10.37 Start term: f_78 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (57) IRS2T2 (EQUIVALENT) 37.08/10.37 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 37.08/10.37 37.08/10.37 (f_211_2,1) 37.08/10.37 (f_78_2,2) 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (58) 37.08/10.37 Obligation: 37.08/10.37 START: 2; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 oldX2 := oldX1 - 1; 37.08/10.37 assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); 37.08/10.37 x0 := 1 + oldX2; 37.08/10.37 x1 := oldX1 - 1; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 oldX2 := oldX1 - 1; 37.08/10.37 assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); 37.08/10.37 x0 := 1 + oldX2; 37.08/10.37 x1 := oldX1 - 1; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 2; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 assume(0 = 0); 37.08/10.37 x0 := 29; 37.08/10.37 x1 := 28; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 FROM: 1; 37.08/10.37 oldX0 := x0; 37.08/10.37 oldX1 := x1; 37.08/10.37 assume(oldX0 > 11 && oldX1 = 25); 37.08/10.37 x0 := 29; 37.08/10.37 x1 := 28; 37.08/10.37 TO: 1; 37.08/10.37 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (59) T2 (COMPLETE) 37.08/10.37 Found this recurrent set for cutpoint 5: 28 <= x0 and x0 <= 28 and 27 <= x1 and x1 <= 27 and x0-x1 <= 1 and x1-x0 <= -1 and x0+x1 <= 55 and 55 <= x0+x1 and x1+-25 <= 0 and -x0+12 <= 0 and -x1+25 <= 0 37.08/10.37 37.08/10.37 ---------------------------------------- 37.08/10.37 37.08/10.37 (60) 37.08/10.37 NO 37.26/10.42 EOF