32.11/9.92 YES 32.11/9.93 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 32.11/9.93 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 32.11/9.93 32.11/9.93 32.11/9.93 Termination of the given C Problem could be proven: 32.11/9.93 32.11/9.93 (0) C Problem 32.11/9.93 (1) CToLLVMProof [EQUIVALENT, 169 ms] 32.11/9.93 (2) LLVM problem 32.11/9.93 (3) LLVMToTerminationGraphProof [EQUIVALENT, 4013 ms] 32.11/9.93 (4) LLVM Symbolic Execution Graph 32.11/9.93 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 32.11/9.93 (6) LLVM Symbolic Execution SCC 32.11/9.93 (7) SCC2IRS [SOUND, 266 ms] 32.11/9.93 (8) IntTRS 32.11/9.93 (9) IRS2T2 [EQUIVALENT, 0 ms] 32.11/9.93 (10) T2IntSys 32.11/9.93 (11) T2 [EQUIVALENT, 913 ms] 32.11/9.93 (12) YES 32.11/9.93 32.11/9.93 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (0) 32.11/9.93 Obligation: 32.11/9.93 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (1) CToLLVMProof (EQUIVALENT) 32.11/9.93 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (2) 32.11/9.93 Obligation: 32.11/9.93 LLVM Problem 32.11/9.93 32.11/9.93 Aliases: 32.11/9.93 32.11/9.93 Data layout: 32.11/9.93 32.11/9.93 "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" 32.11/9.93 32.11/9.93 Machine: 32.11/9.93 32.11/9.93 "x86_64-pc-linux-gnu" 32.11/9.93 32.11/9.93 Type definitions: 32.11/9.93 32.11/9.93 Global variables: 32.11/9.93 32.11/9.93 Function declarations and definitions: 32.11/9.93 32.11/9.93 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 32.11/9.93 *BasicFunctionTypename: "absMathInteger" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (i i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 32.11/9.93 0: 32.11/9.93 %1 = alloca i32, align 4 32.11/9.93 %2 = alloca i32, align 4 32.11/9.93 store %i, %2 32.11/9.93 %3 = load %2 32.11/9.93 %4 = icmp sge %3 0 32.11/9.93 br %4, %5, %7 32.11/9.93 5: 32.11/9.93 %6 = load %2 32.11/9.93 store %6, %1 32.11/9.93 br %10 32.11/9.93 7: 32.11/9.93 %8 = load %2 32.11/9.93 %9 = sub 0 %8 32.11/9.93 store %9, %1 32.11/9.93 br %10 32.11/9.93 10: 32.11/9.93 %11 = load %1 32.11/9.93 ret %11 32.11/9.93 32.11/9.93 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 32.11/9.93 0: 32.11/9.93 %1 = alloca i32, align 4 32.11/9.93 %i = alloca i32, align 4 32.11/9.93 %j = alloca i32, align 4 32.11/9.93 %nondetNat = alloca i32, align 4 32.11/9.93 %nondetPos = alloca i32, align 4 32.11/9.93 store 0, %1 32.11/9.93 %2 = call i32 @__VERIFIER_nondet_int() 32.11/9.93 store %2, %i 32.11/9.93 %3 = call i32 @__VERIFIER_nondet_int() 32.11/9.93 store %3, %j 32.11/9.93 br %4 32.11/9.93 4: 32.11/9.93 %5 = load %i 32.11/9.93 %6 = load %j 32.11/9.93 %7 = sub %5 %6 32.11/9.93 %8 = icmp sge %7 1 32.11/9.93 br %8, %9, %21 32.11/9.93 9: 32.11/9.93 %10 = call i32 @__VERIFIER_nondet_int() 32.11/9.93 %11 = call i32 @absMathInteger(i32 %10) 32.11/9.93 store %11, %nondetNat 32.11/9.93 %12 = load %i 32.11/9.93 %13 = load %nondetNat 32.11/9.93 %14 = sub %12 %13 32.11/9.93 store %14, %i 32.11/9.93 %15 = call i32 @__VERIFIER_nondet_int() 32.11/9.93 %16 = call i32 @absMathInteger(i32 %15) 32.11/9.93 %17 = add %16 1 32.11/9.93 store %17, %nondetPos 32.11/9.93 %18 = load %j 32.11/9.93 %19 = load %nondetPos 32.11/9.93 %20 = add %18 %19 32.11/9.93 store %20, %j 32.11/9.93 br %4 32.11/9.93 21: 32.11/9.93 ret 0 32.11/9.93 32.11/9.93 32.11/9.93 Analyze Termination of all function calls matching the pattern: 32.11/9.93 main() 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (3) LLVMToTerminationGraphProof (EQUIVALENT) 32.11/9.93 Constructed symbolic execution graph for LLVM program and proved memory safety. 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (4) 32.11/9.93 Obligation: 32.11/9.93 SE Graph 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (5) SymbolicExecutionGraphToSCCProof (SOUND) 32.11/9.93 Splitted symbolic execution graph to 1 SCC. 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (6) 32.11/9.93 Obligation: 32.11/9.93 SCC 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (7) SCC2IRS (SOUND) 32.11/9.93 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 32.11/9.93 Generated rules. Obtained 111 rulesP rules: 32.11/9.93 f_306(v262, v263, v264, 0, v266, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v283, v284, v274, v275, v272, v273, v276, 1, 3, 4) -> f_308(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_308(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) -> f_310(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) :|: TRUE 32.11/9.93 f_310(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) -> f_312(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_312(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) -> f_314(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_314(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v278, v279, v280, v281, v282, 0, 3, 4) -> f_316(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v300, v278, v279, v280, v281, v282, 0, 3, 4) :|: v300 + v266 = v274 32.11/9.93 f_316(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v300, v278, v279, v280, v281, v282, 0, 3, 4) -> f_318(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v300, v278, v279, v280, v281, v282, 0, 3, 4) :|: TRUE 32.11/9.93 f_318(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v300, v278, v279, v280, v281, v282, 0, 3, 4) -> f_321(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v300, v324, v278, v279, v280, v281, v282, 0, 3, 4) :|: TRUE 32.11/9.93 f_321(v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, 1, v262, v266, v300, v324, v278, v279, v280, v281, v282, 0, 3, 4) -> f_323(v324, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 0 = 0 32.11/9.93 f_323(v324, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_325(v324, v341, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 1 <= v341 && v342 = 3 + v341 && 4 <= v342 32.11/9.93 f_325(v324, v341, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_327(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 1 <= v344 && v345 = 3 + v344 && 4 <= v345 32.11/9.93 f_327(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_329(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: TRUE 32.11/9.93 f_329(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_332(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 0 = 0 32.11/9.93 f_332(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_335(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 0 <= v324 32.11/9.93 f_332(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_336(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: v324 < 0 32.11/9.93 f_335(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_339(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) :|: 0 = 0 32.11/9.93 f_339(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) -> f_343(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) :|: TRUE 32.11/9.93 f_343(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) -> f_347(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) :|: 0 = 0 32.11/9.93 f_347(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) -> f_351(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) :|: TRUE 32.11/9.93 f_351(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) -> f_355(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) :|: TRUE 32.11/9.93 f_355(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, v262, 3, 4) -> f_356(v324, v341, v344, 1, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v300, v275, v266, v398, v399, v400, v402, v403, 3, 4) :|: TRUE 32.11/9.93 f_356(v389, v390, v391, 1, v393, v406, v394, v407, v395, v408, v396, v409, v397, v410, v411, v412, 0, v405, v401, v404, v398, v399, v400, v402, v403, 3, 4) -> f_359(v389, v390, v391, 1, v393, v406, v394, v407, v395, v408, v396, v409, v397, v410, v411, v412, 0, v405, v401, v404, v398, v399, v400, v402, v403, 3, 4) :|: 0 = 0 32.11/9.93 f_359(v389, v390, v391, 1, v393, v406, v394, v407, v395, v408, v396, v409, v397, v410, v411, v412, 0, v405, v401, v404, v398, v399, v400, v402, v403, 3, 4) -> f_362(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v406, v407, v408, v409, v410, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_362(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v406, v407, v408, v409, v410, 0, 3, 4) -> f_364(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) :|: v452 = 1 + v389 && 1 <= v452 32.11/9.93 f_364(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) -> f_366(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) :|: TRUE 32.11/9.93 f_366(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) -> f_368(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_368(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) -> f_370(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_370(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v406, v407, v408, v409, v410, 0, 3, 4) -> f_372(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) :|: v456 = v401 + v452 32.11/9.93 f_372(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) -> f_374(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) :|: TRUE 32.11/9.93 f_374(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) -> f_376(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) :|: TRUE 32.11/9.93 f_376(v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, 1, v403, v404, v405, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) -> f_378(v393, v394, v395, v396, v397, v398, v399, v405, v401, v402, 1, v403, v404, v400, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_378(v393, v394, v395, v396, v397, v398, v399, v405, v401, v402, 1, v403, v404, v400, v389, v452, v456, v406, v407, v408, v409, v410, 0, 3, 4) -> f_380(v393, v394, v395, v396, v397, v398, v399, v405, v456, v402, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_380(v393, v394, v395, v396, v397, v398, v399, v405, v456, v402, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) -> f_382(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) :|: v474 + v456 = v405 32.11/9.93 f_382(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) -> f_384(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) :|: 1 <= v474 32.11/9.93 f_384(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) -> f_387(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_387(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) -> f_391(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) :|: TRUE 32.11/9.93 f_391(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v403, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) -> f_395(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v476, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) :|: TRUE 32.11/9.93 f_395(v393, v394, v395, v396, v397, v398, v399, v405, v456, v474, 1, v476, v404, v400, v389, v452, v401, v406, v407, v408, v409, v410, 0, 3, 4) -> f_398(v476, v393, v406, v394, v407, v395, v408, v396, v409, v397, v410, 0, v405, v404, v452, v456, v398, v399, v474, 1, v400, v389, v401, 3, 4) :|: 0 = 0 32.11/9.93 f_398(v476, v393, v406, v394, v407, v395, v408, v396, v409, v397, v410, 0, v405, v404, v452, v456, v398, v399, v474, 1, v400, v389, v401, 3, 4) -> f_402(v476, v393, v406, v394, v407, v395, v408, v396, v409, v397, v410, 0, v405, v456, v404, v452, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_402(v512, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_403(v512, v536, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: 1 <= v536 && v537 = 3 + v536 && 4 <= v537 32.11/9.93 f_403(v512, v536, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_404(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: 1 <= v538 && v539 = 3 + v538 && 4 <= v539 32.11/9.93 f_404(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_405(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_405(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_406(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_406(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_407(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: 0 <= v512 32.11/9.93 f_406(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_408(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: v512 < 0 32.11/9.93 f_407(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_409(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_409(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) -> f_411(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_411(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) -> f_413(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_413(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) -> f_415(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_415(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) -> f_417(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_417(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) -> f_419(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_419(v512, v536, v538, 1, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, v525, v526, v527, v529, 3, 4) -> f_421(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v525, v524, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_421(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v525, v524, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_422(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v525, v524, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: TRUE 32.11/9.93 f_422(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v525, v524, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_423(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v524, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_423(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v524, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_424(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_424(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_425(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v599, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: v599 + v512 = v520 32.11/9.93 f_425(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v599, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_426(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v599, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: TRUE 32.11/9.93 f_426(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v599, v526, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_427(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v599, v601, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) :|: TRUE 32.11/9.93 f_427(v513, v514, v515, v516, v517, v518, v519, v520, v521, v522, 1, v512, v599, v601, v527, v528, v529, v530, v531, v532, v533, v534, 0, 3, 4) -> f_428(v601, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, 0, v521, v528, v512, v599, v518, v519, v520, v522, 1, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_428(v601, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, 0, v521, v528, v512, v599, v518, v519, v520, v522, 1, v527, v529, 3, 4) -> f_320(v601, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, 0, v599, v521, v512, v309, v310, v311, v313, 1, 3, 4) :|: TRUE 32.11/9.93 f_320(v303, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_322(v303, v325, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: 1 <= v325 && v326 = 3 + v325 && 4 <= v326 32.11/9.93 f_322(v303, v325, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_324(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: 1 <= v339 && v340 = 3 + v339 && 4 <= v340 32.11/9.93 f_324(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_326(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: TRUE 32.11/9.93 f_326(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_328(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: 0 = 0 32.11/9.93 f_328(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_330(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: 0 <= v303 32.11/9.93 f_328(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_331(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: v303 < 0 32.11/9.93 f_330(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_333(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) :|: 0 = 0 32.11/9.93 f_333(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) -> f_337(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) :|: TRUE 32.11/9.93 f_337(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) -> f_341(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) :|: 0 = 0 32.11/9.93 f_341(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) -> f_345(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) :|: TRUE 32.11/9.93 f_345(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) -> f_349(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) :|: TRUE 32.11/9.93 f_349(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 3, 4) -> f_356(v303, v325, v339, 1, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v398, v399, v400, v402, v403, 3, 4) :|: TRUE 32.11/9.93 f_331(v303, v325, v339, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, 0, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_334(v303, v325, v339, 0, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: 0 = 0 32.11/9.93 f_334(v303, v325, v339, 0, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_338(v303, v325, v339, 0, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: TRUE 32.11/9.93 f_338(v303, v325, v339, 0, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_342(v303, v325, v339, 0, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: 0 = 0 32.11/9.93 f_342(v303, v325, v339, 0, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_346(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: v377 + v303 = 0 && 1 <= v377 32.11/9.93 f_346(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_350(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: TRUE 32.11/9.93 f_350(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_354(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) :|: TRUE 32.11/9.93 f_354(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v309, v310, v311, v313, 1, 3, 4) -> f_361(v303, v325, v339, 0, v377, v304, v317, v305, v318, v306, v319, v307, v320, v308, v321, v326, v340, v316, v312, v315, v433, v434, v435, v437, 1, v439, 3, 4) :|: TRUE 32.11/9.93 f_361(v423, v424, v425, 0, v427, v428, v442, v429, v443, v430, v444, v431, v445, v432, v446, v447, v448, v441, v436, v440, v433, v434, v435, v437, 1, v439, 3, 4) -> f_363(v423, v424, v425, 0, v427, v428, v442, v429, v443, v430, v444, v431, v445, v432, v446, v447, v448, v441, v436, v440, v433, v434, v435, v437, 1, v439, 3, 4) :|: 0 = 0 32.11/9.93 f_363(v423, v424, v425, 0, v427, v428, v442, v429, v443, v430, v444, v431, v445, v432, v446, v447, v448, v441, v436, v440, v433, v434, v435, v437, 1, v439, 3, 4) -> f_365(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v442, v443, v444, v445, v446, 0, 3, 4) :|: 0 = 0 32.11/9.93 f_365(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v442, v443, v444, v445, v446, 0, 3, 4) -> f_367(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: v454 = 1 + v427 && 2 <= v454 32.11/9.93 f_367(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_369(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: TRUE 32.11/9.93 f_369(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_371(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: 0 = 0 32.11/9.93 f_371(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_373(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: 0 = 0 32.11/9.93 f_373(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_375(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: v458 = v436 + v454 32.11/9.93 f_375(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_377(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: TRUE 32.11/9.93 f_377(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_379(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: TRUE 32.11/9.93 f_379(v428, v429, v430, v431, v432, v433, v434, v435, v436, v437, 1, v439, v440, v441, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_381(v428, v429, v430, v431, v432, v433, v434, v441, v436, v437, 1, v439, v440, v435, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: 0 = 0 32.11/9.93 f_381(v428, v429, v430, v431, v432, v433, v434, v441, v436, v437, 1, v439, v440, v435, v423, v427, v454, v458, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_383(v428, v429, v430, v431, v432, v433, v434, v441, v458, v437, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: 0 = 0 32.11/9.93 f_383(v428, v429, v430, v431, v432, v433, v434, v441, v458, v437, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_386(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: v475 + v458 = v441 32.11/9.93 f_386(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_389(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: 1 <= v475 32.11/9.93 f_389(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_393(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: 0 = 0 32.11/9.93 f_393(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_396(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: TRUE 32.11/9.93 f_396(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v439, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_399(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v507, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) :|: TRUE 32.11/9.93 f_399(v428, v429, v430, v431, v432, v433, v434, v441, v458, v475, 1, v507, v440, v435, v423, v427, v454, v436, v442, v443, v444, v445, v446, 0, 3, 4, 2) -> f_401(v507, v428, v442, v429, v443, v430, v444, v431, v445, v432, v446, 0, v441, v440, v454, v458, v433, v434, v475, 1, v435, v423, v427, v436, 3, 4, 2) :|: 0 = 0 32.11/9.93 f_401(v507, v428, v442, v429, v443, v430, v444, v431, v445, v432, v446, 0, v441, v440, v454, v458, v433, v434, v475, 1, v435, v423, v427, v436, 3, 4, 2) -> f_402(v507, v428, v442, v429, v443, v430, v444, v431, v445, v432, v446, 0, v441, v458, v440, v454, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_408(v512, v536, v538, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, 0, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_410(v512, v536, v538, 0, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_410(v512, v536, v538, 0, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_412(v512, v536, v538, 0, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_412(v512, v536, v538, 0, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_414(v512, v536, v538, 0, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: 0 = 0 32.11/9.93 f_414(v512, v536, v538, 0, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_416(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: v558 + v512 = 0 && 1 <= v558 32.11/9.93 f_416(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_418(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_418(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_420(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) :|: TRUE 32.11/9.93 f_420(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v524, v528, v518, v519, v522, 1, v525, v526, v527, v529, 3, 4) -> f_304(v512, v536, v538, 0, v558, v513, v530, v514, v531, v515, v532, v516, v533, v517, v534, v537, v539, v520, v521, v272, v273, v276, 1, 3, 4) :|: TRUE 32.11/9.93 f_304(v262, v263, v264, 0, v266, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v283, v284, v274, v275, v272, v273, v276, 1, 3, 4) -> f_306(v262, v263, v264, 0, v266, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v283, v284, v274, v275, v272, v273, v276, 1, 3, 4) :|: 0 = 0 32.11/9.93 f_336(v324, v341, v344, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, 0, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_340(v324, v341, v344, 0, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 0 = 0 32.11/9.93 f_340(v324, v341, v344, 0, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_344(v324, v341, v344, 0, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: TRUE 32.11/9.93 f_344(v324, v341, v344, 0, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_348(v324, v341, v344, 0, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: 0 = 0 32.11/9.93 f_348(v324, v341, v344, 0, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_352(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: v380 + v324 = 0 && 1 <= v380 32.11/9.93 f_352(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_357(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: TRUE 32.11/9.93 f_357(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_360(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) :|: TRUE 32.11/9.93 f_360(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v275, v266, v300, v272, v273, v274, v276, 1, v262, 3, 4) -> f_361(v324, v341, v344, 0, v380, v267, v278, v268, v279, v269, v280, v270, v281, v271, v282, v342, v345, v300, v275, v266, v433, v434, v435, v437, 1, v439, 3, 4) :|: TRUE 32.11/9.93 Combined rules. Obtained 4 rulesP rules: 32.11/9.93 f_406(v512:0, v536:0, v538:0, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, v537:0, v539:0, 0, v474:0 + (v521:0 + (1 + v324:0)) + v558:0, v521:0, v524:0, v528:0, v518:0, v519:0, v522:0, 1, v525:0, v526:0, v527:0, v529:0, 3, 4) -> f_406(v476:0, v536:1, v538:1, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, 3 + v536:1, 3 + v538:1, 0, v474:0 + (v521:0 + (1 + v324:0)), v521:0 + (1 + v324:0), v558:0, 1 + v324:0, v518:1, v519:1, v522:1, 1, v525:1, v526:1, v527:1, v529:1, 3, 4) :|: v341:0 > 0 && v344:0 > 0 && v324:0 > -1 && v474:0 > 0 && v512:0 < 0 && v536:1 > 0 && v558:0 > 0 && v558:0 + v512:0 = 0 && v538:1 > 0 32.11/9.93 f_406(v512:0, v536:0, v538:0, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, v537:0, v539:0, 0, v474:0 + (v521:0 + (1 + v601:0)) + v512:0, v521:0, v524:0, v528:0, v518:0, v519:0, v522:0, 1, v525:0, v526:0, v527:0, v529:0, 3, 4) -> f_406(v476:0, v536:1, v538:1, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, 3 + v536:1, 3 + v538:1, 0, v474:0 + (v521:0 + (1 + v601:0)), v521:0 + (1 + v601:0), v512:0, 1 + v601:0, v518:1, v519:1, v522:1, 1, v525:1, v526:1, v527:1, v529:1, 3, 4) :|: v512:0 > -1 && v601:0 > -1 && v325:0 > 0 && v339:0 > 0 && v474:0 > 0 && v536:1 > 0 && v538:1 > 0 32.11/9.93 f_406(v512:0, v536:0, v538:0, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, v537:0, v539:0, 0, v475:0 + (v521:0 + (1 + v377:0)) + v512:0, v521:0, v524:0, v528:0, v518:0, v519:0, v522:0, 1, v525:0, v526:0, v527:0, v529:0, 3, 4) -> f_406(v507:0, v536:1, v538:1, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, 3 + v536:1, 3 + v538:1, 0, v475:0 + (v521:0 + (1 + v377:0)), v521:0 + (1 + v377:0), v512:0, 1 + v377:0, v518:1, v519:1, v522:1, 1, v525:1, v526:1, v527:1, v529:1, 3, 4) :|: v512:0 > -1 && v325:0 > 0 && v339:0 > 0 && v601:0 < 0 && v377:0 > 0 && v377:0 + v601:0 = 0 && v536:1 > 0 && v538:1 > 0 && v475:0 > 0 32.11/9.93 f_406(v512:0, v536:0, v538:0, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, v537:0, v539:0, 0, v475:0 + (v521:0 + (1 + v380:0)) + v558:0, v521:0, v524:0, v528:0, v518:0, v519:0, v522:0, 1, v525:0, v526:0, v527:0, v529:0, 3, 4) -> f_406(v507:0, v536:1, v538:1, v513:0, v530:0, v514:0, v531:0, v515:0, v532:0, v516:0, v533:0, v517:0, v534:0, 3 + v536:1, 3 + v538:1, 0, v475:0 + (v521:0 + (1 + v380:0)), v521:0 + (1 + v380:0), v558:0, 1 + v380:0, v518:1, v519:1, v522:1, 1, v525:1, v526:1, v527:1, v529:1, 3, 4) :|: v380:0 > 0 && v341:0 > 0 && v512:0 < 0 && v344:0 > 0 && v558:0 > 0 && v558:0 + v512:0 = 0 && v324:0 < 0 && v536:1 > 0 && v538:1 > 0 && v475:0 > 0 && v380:0 + v324:0 = 0 32.11/9.93 Filtered unneeded arguments: 32.11/9.93 f_406(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30) -> f_406(x1, x17, x18) 32.11/9.93 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 32.11/9.93 f_406(v512:0, sum~sum~v474:0~sum~v521:0~sum~cons_1~v324:0~v558:0, v521:0) -> f_406(v476:0, v474:0 + (v521:0 + (1 + v324:0)), v521:0 + (1 + v324:0)) :|: v474:0 > 0 && v324:0 > -1 && v512:0 < 0 && v558:0 + v512:0 = 0 && v558:0 > 0 && sum~sum~v474:0~sum~v521:0~sum~cons_1~v324:0~v558:0 = v474:0 + (v521:0 + (1 + v324:0)) + v558:0 32.11/9.93 f_406(v512:0, sum~sum~v474:0~sum~v521:0~sum~cons_1~v601:0~v512:0, v521:0) -> f_406(v476:0, v474:0 + (v521:0 + (1 + v601:0)), v521:0 + (1 + v601:0)) :|: v601:0 > -1 && v474:0 > 0 && v512:0 > -1 && sum~sum~v474:0~sum~v521:0~sum~cons_1~v601:0~v512:0 = v474:0 + (v521:0 + (1 + v601:0)) + v512:0 32.11/9.93 f_406(v512:0, sum~sum~v475:0~sum~v521:0~sum~cons_1~v377:0~v512:0, v521:0) -> f_406(v507:0, v475:0 + (v521:0 + (1 + v377:0)), v521:0 + (1 + v377:0)) :|: v377:0 > 0 && v475:0 > 0 && v512:0 > -1 && sum~sum~v475:0~sum~v521:0~sum~cons_1~v377:0~v512:0 = v475:0 + (v521:0 + (1 + v377:0)) + v512:0 32.11/9.93 f_406(v512:0, sum~sum~v475:0~sum~v521:0~sum~cons_1~v380:0~v558:0, v521:0) -> f_406(v507:0, v475:0 + (v521:0 + (1 + v380:0)), v521:0 + (1 + v380:0)) :|: v512:0 < 0 && v380:0 > 0 && v558:0 > 0 && v475:0 > 0 && v558:0 + v512:0 = 0 && sum~sum~v475:0~sum~v521:0~sum~cons_1~v380:0~v558:0 = v475:0 + (v521:0 + (1 + v380:0)) + v558:0 32.11/9.93 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (8) 32.11/9.93 Obligation: 32.11/9.93 Rules: 32.11/9.93 f_406(v512:0, sum~sum~v474:0~sum~v521:0~sum~cons_1~v324:0~v558:0, v521:0) -> f_406(v476:0, v474:0 + (v521:0 + (1 + v324:0)), v521:0 + (1 + v324:0)) :|: v474:0 > 0 && v324:0 > -1 && v512:0 < 0 && v558:0 + v512:0 = 0 && v558:0 > 0 && sum~sum~v474:0~sum~v521:0~sum~cons_1~v324:0~v558:0 = v474:0 + (v521:0 + (1 + v324:0)) + v558:0 32.11/9.93 f_406(x, x1, x2) -> f_406(x3, x4 + (x2 + (1 + x5)), x2 + (1 + x5)) :|: x5 > -1 && x4 > 0 && x > -1 && x1 = x4 + (x2 + (1 + x5)) + x 32.11/9.93 f_406(x6, x7, x8) -> f_406(x9, x10 + (x8 + (1 + x11)), x8 + (1 + x11)) :|: x11 > 0 && x10 > 0 && x6 > -1 && x7 = x10 + (x8 + (1 + x11)) + x6 32.11/9.93 f_406(x12, x13, x14) -> f_406(x15, x16 + (x14 + (1 + x17)), x14 + (1 + x17)) :|: x12 < 0 && x17 > 0 && x18 > 0 && x16 > 0 && x18 + x12 = 0 && x13 = x16 + (x14 + (1 + x17)) + x18 32.11/9.93 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (9) IRS2T2 (EQUIVALENT) 32.11/9.93 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 32.11/9.93 32.11/9.93 (f_406_3,1) 32.11/9.93 32.11/9.93 ---------------------------------------- 32.11/9.93 32.11/9.93 (10) 32.11/9.93 Obligation: 32.11/9.93 START: 0; 32.11/9.93 32.11/9.93 FROM: 0; 32.11/9.93 TO: 1; 32.11/9.93 32.11/9.93 FROM: 1; 32.11/9.93 oldX0 := x0; 32.11/9.93 oldX1 := x1; 32.11/9.93 oldX2 := x2; 32.11/9.93 oldX6 := -(oldX0 - 0); 32.11/9.93 oldX3 := nondet(); 32.11/9.93 oldX4 := nondet(); 32.11/9.93 oldX5 := nondet(); 32.11/9.93 assume(oldX4 > 0 && oldX5 > -1 && oldX0 < 0 && oldX6 + oldX0 = 0 && oldX6 > 0 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX6); 32.11/9.93 x0 := oldX3; 32.11/9.93 x1 := oldX4 + (oldX2 + (1 + oldX5)); 32.11/9.93 x2 := oldX2 + (1 + oldX5); 32.11/9.93 TO: 1; 32.11/9.93 32.11/9.93 FROM: 1; 32.11/9.93 oldX0 := x0; 32.11/9.93 oldX1 := x1; 32.11/9.93 oldX2 := x2; 32.11/9.93 oldX3 := nondet(); 32.11/9.93 oldX4 := nondet(); 32.11/9.93 oldX5 := nondet(); 32.11/9.93 assume(oldX5 > -1 && oldX4 > 0 && oldX0 > -1 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX0); 32.11/9.93 x0 := oldX3; 32.11/9.93 x1 := oldX4 + (oldX2 + (1 + oldX5)); 32.11/9.93 x2 := oldX2 + (1 + oldX5); 32.11/9.93 TO: 1; 32.11/9.93 32.11/9.93 FROM: 1; 32.11/9.93 oldX0 := x0; 32.11/9.93 oldX1 := x1; 32.11/9.93 oldX2 := x2; 32.11/9.94 oldX3 := nondet(); 32.11/9.94 oldX4 := nondet(); 32.11/9.94 oldX5 := nondet(); 32.11/9.94 assume(oldX5 > 0 && oldX4 > 0 && oldX0 > -1 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX0); 32.11/9.94 x0 := oldX3; 32.11/9.94 x1 := oldX4 + (oldX2 + (1 + oldX5)); 32.11/9.94 x2 := oldX2 + (1 + oldX5); 32.11/9.94 TO: 1; 32.11/9.94 32.11/9.94 FROM: 1; 32.11/9.94 oldX0 := x0; 32.11/9.94 oldX1 := x1; 32.11/9.94 oldX2 := x2; 32.11/9.94 oldX6 := -(oldX0 - 0); 32.11/9.94 oldX3 := nondet(); 32.11/9.94 oldX4 := nondet(); 32.11/9.94 oldX5 := nondet(); 32.11/9.94 assume(oldX0 < 0 && oldX5 > 0 && oldX6 > 0 && oldX4 > 0 && oldX6 + oldX0 = 0 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX6); 32.11/9.94 x0 := oldX3; 32.11/9.94 x1 := oldX4 + (oldX2 + (1 + oldX5)); 32.11/9.94 x2 := oldX2 + (1 + oldX5); 32.11/9.94 TO: 1; 32.11/9.94 32.11/9.94 32.11/9.94 ---------------------------------------- 32.11/9.94 32.11/9.94 (11) T2 (EQUIVALENT) 32.11/9.94 Initially, performed program simplifications using lexicographic rank functions: 32.11/9.94 * Removed transitions 1, 4, 5, 6, 7 using the following rank functions: 32.11/9.94 - Rank function 1: 32.11/9.94 RF for loc. 5: 1+2*x1-2*x2 32.11/9.94 RF for loc. 6: 2*x1-2*x2 32.11/9.94 Bound for (chained) transitions 4: 6 32.11/9.94 Bound for (chained) transitions 5: 4 32.11/9.94 Bound for (chained) transitions 6: 6 32.11/9.94 Bound for (chained) transitions 7: 8 32.11/9.94 - Rank function 2: 32.11/9.94 RF for loc. 5: 0 32.11/9.94 RF for loc. 6: -1 32.11/9.94 Bound for (chained) transitions 1: 0 32.11/9.94 32.11/9.94 ---------------------------------------- 32.11/9.94 32.11/9.94 (12) 32.11/9.94 YES 32.11/9.98 EOF