/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- NO proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be disproven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 164 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 678 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] (6) AND (7) LLVM Symbolic Execution Lasso (8) Lasso2IRS [EQUIVALENT, 97 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) LLVM Symbolic Execution Lasso (13) Lasso2IRS [EQUIVALENT, 23 ms] (14) IntTRS (15) IRS2T2 [EQUIVALENT, 0 ms] (16) T2IntSys (17) LLVM Symbolic Execution Lasso (18) Lasso2IRS [EQUIVALENT, 93 ms] (19) IntTRS (20) IRS2T2 [EQUIVALENT, 0 ms] (21) T2IntSys (22) LLVM Symbolic Execution Lasso (23) Lasso2IRS [EQUIVALENT, 100 ms] (24) IntTRS (25) IRS2T2 [EQUIVALENT, 0 ms] (26) T2IntSys (27) LLVM Symbolic Execution Lasso (28) Lasso2IRS [EQUIVALENT, 30 ms] (29) IntTRS (30) IRS2T2 [EQUIVALENT, 0 ms] (31) T2IntSys (32) LLVM Symbolic Execution Lasso (33) Lasso2IRS [EQUIVALENT, 96 ms] (34) IntTRS (35) IRS2T2 [EQUIVALENT, 0 ms] (36) T2IntSys (37) T2 [COMPLETE, 1153 ms] (38) NO (39) LLVM Symbolic Execution Lasso (40) Lasso2IRS [EQUIVALENT, 100 ms] (41) IntTRS (42) IRS2T2 [EQUIVALENT, 0 ms] (43) T2IntSys (44) LLVM Symbolic Execution Lasso (45) Lasso2IRS [EQUIVALENT, 95 ms] (46) IntTRS (47) IRS2T2 [EQUIVALENT, 0 ms] (48) T2IntSys (49) LLVM Symbolic Execution Lasso (50) Lasso2IRS [EQUIVALENT, 31 ms] (51) IntTRS (52) IRS2T2 [EQUIVALENT, 0 ms] (53) T2IntSys (54) LLVM Symbolic Execution Lasso (55) Lasso2IRS [EQUIVALENT, 101 ms] (56) IntTRS (57) IRS2T2 [EQUIVALENT, 0 ms] (58) T2IntSys ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %i = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %i br %3 3: %4 = load %i %5 = icmp sgt %4 10 br %5, %6, %18 6: %7 = load %i %8 = icmp eq %7 25 br %8, %9, %10 9: store 30, %i br %10 10: %11 = load %i %12 = icmp sle %11 30 br %12, %13, %16 13: %14 = load %i %15 = sub %14 1 store %15, %i br %17 16: store 20, %i br %17 17: br %3 18: ret 0 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToLassoProof (COMPLETE) Converted SEGraph to 10 dependent lassos. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: Lasso ---------------------------------------- (8) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 76 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 f_78 -> f_211(20, 19) :|: TRUE f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 ---------------------------------------- (9) Obligation: Rules: 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 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 f_78 -> f_211(20, 19) :|: TRUE f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 Start term: f_78 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_211_2,1) (f_78_2,2) ---------------------------------------- (11) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := 20; x1 := 19; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX0 > 11 && oldX1 = 25); x0 := 29; x1 := 28; TO: 1; ---------------------------------------- (12) Obligation: Lasso ---------------------------------------- (13) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 66 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 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 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 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 ---------------------------------------- (14) Obligation: Rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(x) :|: x > 24 && x < 30 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 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 Start term: f_78 ---------------------------------------- (15) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_78_1,1) (f_220_1,2) ---------------------------------------- (16) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); x0 := oldX1; TO: 2; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 > 24 && oldX1 < 30); x0 := oldX1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 25); x0 := 28; TO: 2; ---------------------------------------- (17) Obligation: Lasso ---------------------------------------- (18) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 64 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: 0 = 0 f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: TRUE f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 4 rulesP rules: 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 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 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 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 Filtered unneeded arguments: f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 f_78 -> f_211(29, 28) :|: TRUE f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 ---------------------------------------- (19) Obligation: Rules: 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 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 f_78 -> f_211(29, 28) :|: TRUE f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 Start term: f_78 ---------------------------------------- (20) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_211_2,1) (f_78_2,2) ---------------------------------------- (21) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := 29; x1 := 28; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX0 > 11 && oldX1 = 25); x0 := 29; x1 := 28; TO: 1; ---------------------------------------- (22) Obligation: Lasso ---------------------------------------- (23) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 76 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 f_78 -> f_211(20, 19) :|: TRUE f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 ---------------------------------------- (24) Obligation: Rules: 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 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 f_78 -> f_211(20, 19) :|: TRUE f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 Start term: f_78 ---------------------------------------- (25) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_211_2,1) (f_78_2,2) ---------------------------------------- (26) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := 20; x1 := 19; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX0 > 11 && oldX1 = 25); x0 := 29; x1 := 28; TO: 1; ---------------------------------------- (27) Obligation: Lasso ---------------------------------------- (28) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 66 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 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 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 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 ---------------------------------------- (29) Obligation: Rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(x) :|: x > 24 && x < 30 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 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 Start term: f_78 ---------------------------------------- (30) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_78_1,1) (f_220_1,2) ---------------------------------------- (31) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); x0 := oldX1; TO: 2; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 > 24 && oldX1 < 30); x0 := oldX1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 25); x0 := 28; TO: 2; ---------------------------------------- (32) Obligation: Lasso ---------------------------------------- (33) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 64 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: 0 = 0 f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: TRUE f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 4 rulesP rules: 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 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 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 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 Filtered unneeded arguments: f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 f_78 -> f_211(29, 28) :|: TRUE f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 ---------------------------------------- (34) Obligation: Rules: 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 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 f_78 -> f_211(29, 28) :|: TRUE f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 Start term: f_78 ---------------------------------------- (35) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_211_2,1) (f_78_2,2) ---------------------------------------- (36) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := 29; x1 := 28; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX0 > 11 && oldX1 = 25); x0 := 29; x1 := 28; TO: 1; ---------------------------------------- (37) T2 (COMPLETE) 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 ---------------------------------------- (38) NO ---------------------------------------- (39) Obligation: Lasso ---------------------------------------- (40) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 76 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 f_78 -> f_211(20, 19) :|: TRUE f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 ---------------------------------------- (41) Obligation: Rules: 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 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 f_78 -> f_211(20, 19) :|: TRUE f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 Start term: f_78 ---------------------------------------- (42) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_211_2,1) (f_78_2,2) ---------------------------------------- (43) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := 20; x1 := 19; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX0 > 11 && oldX1 = 25); x0 := 29; x1 := 28; TO: 1; ---------------------------------------- (44) Obligation: Lasso ---------------------------------------- (45) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 66 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 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 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 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 ---------------------------------------- (46) Obligation: Rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(x) :|: x > 24 && x < 30 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 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 Start term: f_78 ---------------------------------------- (47) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_78_1,1) (f_220_1,2) ---------------------------------------- (48) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); x0 := oldX1; TO: 2; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 > 24 && oldX1 < 30); x0 := oldX1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 25); x0 := 28; TO: 2; ---------------------------------------- (49) Obligation: Lasso ---------------------------------------- (50) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 66 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 5 rulesP rules: 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 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 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 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 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 Filtered unneeded arguments: f_220(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_220(x4) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(v7:0) :|: v7:0 > 24 && v7:0 < 30 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 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 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 ---------------------------------------- (51) Obligation: Rules: f_78 -> f_220(v7:0) :|: v7:0 < 24 && v7:0 < 30 && v7:0 > 10 f_78 -> f_220(x) :|: x > 24 && x < 30 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 f_220(x1) -> f_220(x2) :|: x2 < 29 && x2 > 24 && x1 = 1 + x2 f_220(cons_25) -> f_220(28) :|: TRUE && cons_25 = 25 Start term: f_78 ---------------------------------------- (52) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_78_1,1) (f_220_1,2) ---------------------------------------- (53) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 < 24 && oldX1 < 30 && oldX1 > 10); x0 := oldX1; TO: 2; FROM: 1; oldX0 := x0; oldX1 := nondet(); assume(oldX1 > 24 && oldX1 < 30); x0 := oldX1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 < 24 && oldX1 > 10 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := oldX0 - 1; assume(oldX1 < 29 && oldX1 > 24 && oldX0 = 1 + oldX1); x0 := oldX0 - 1; TO: 2; FROM: 2; oldX0 := x0; assume(0 = 0 && oldX0 = 25); x0 := 28; TO: 2; ---------------------------------------- (54) Obligation: Lasso ---------------------------------------- (55) Lasso2IRS (EQUIVALENT) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 64 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 f_78 -> f_79(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 f_79(v1, v2, 3, 1, 4) -> f_80(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 f_80(v1, v3, v2, v4, 3, 1, 4) -> f_81(v1, v3, v2, v4, 0, 3, 1, 4) :|: TRUE f_81(v1, v3, v2, v4, 0, 3, 1, 4) -> f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_82(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_83(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: TRUE f_84(v1, v3, v5, v2, v4, 0, 3, 1, 4) -> f_85(v1, v3, v5, v2, v4, 0, 3, 1, 4) :|: 0 = 0 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 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 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 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 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 f_93(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: 0 = 0 f_95(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) :|: TRUE f_97(v1, v3, 25, 1, v2, v4, 0, 3, 4) -> f_99(v1, v3, 25, 1, v2, v4, 0, 30, 3, 4) :|: TRUE 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 4 rulesP rules: 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 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 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 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 Filtered unneeded arguments: f_211(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_211(x4, x7) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 f_78 -> f_211(29, 28) :|: TRUE f_211(v219:0, cons_25) -> f_211(29, 28) :|: v219:0 > 11 && cons_25 = 25 ---------------------------------------- (56) Obligation: Rules: 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 f_211(x, x1) -> f_211(1 + x2, x2) :|: x2 < 29 && x > 11 && x2 > 24 && x1 = 1 + x2 f_78 -> f_211(29, 28) :|: TRUE f_211(x3, x4) -> f_211(29, 28) :|: x3 > 11 && x4 = 25 Start term: f_78 ---------------------------------------- (57) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_211_2,1) (f_78_2,2) ---------------------------------------- (58) Obligation: START: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 > 9 && oldX0 > 11 && oldX2 < 29 && oldX2 < 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := oldX1 - 1; assume(oldX2 < 29 && oldX0 > 11 && oldX2 > 24 && oldX1 = 1 + oldX2); x0 := 1 + oldX2; x1 := oldX1 - 1; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := 29; x1 := 28; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; assume(oldX0 > 11 && oldX1 = 25); x0 := 29; x1 := 28; TO: 1;