/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 172 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 4300 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) LLVM Symbolic Execution SCC (7) SCC2IRS [SOUND, 250 ms] (8) IntTRS (9) IRS2T2 [EQUIVALENT, 0 ms] (10) T2IntSys (11) T2 [EQUIVALENT, 1015 ms] (12) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "absMathInteger" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (i i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 store %i, %2 %3 = load %2 %4 = icmp sge %3 0 br %4, %5, %7 5: %6 = load %2 store %6, %1 br %10 7: %8 = load %2 %9 = sub 0 %8 store %9, %1 br %10 10: %11 = load %1 ret %11 *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 %j = alloca i32, align 4 %nondetNat = alloca i32, align 4 %nondetPos = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %i %3 = call i32 @__VERIFIER_nondet_int() store %3, %j br %4 4: %5 = load %i %6 = load %j %7 = sub %5 %6 %8 = icmp sge %7 1 br %8, %9, %21 9: %10 = call i32 @__VERIFIER_nondet_int() %11 = call i32 @absMathInteger(i32 %10) store %11, %nondetNat %12 = load %i %13 = load %nondetNat %14 = sub %12 %13 store %14, %i %15 = call i32 @__VERIFIER_nondet_int() %16 = call i32 @absMathInteger(i32 %15) %17 = add %16 1 store %17, %nondetPos %18 = load %j %19 = load %nondetPos %20 = add %18 %19 store %20, %j br %4 21: 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) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 1 SCC. ---------------------------------------- (6) Obligation: SCC ---------------------------------------- (7) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 111 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 4 rulesP rules: 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 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 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 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 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 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 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 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 ---------------------------------------- (8) Obligation: Rules: 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 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 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 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 ---------------------------------------- (9) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_406_3,1) ---------------------------------------- (10) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX6 := -(oldX0 - 0); oldX3 := nondet(); oldX4 := nondet(); oldX5 := nondet(); assume(oldX4 > 0 && oldX5 > -1 && oldX0 < 0 && oldX6 + oldX0 = 0 && oldX6 > 0 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX6); x0 := oldX3; x1 := oldX4 + (oldX2 + (1 + oldX5)); x2 := oldX2 + (1 + oldX5); TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); oldX4 := nondet(); oldX5 := nondet(); assume(oldX5 > -1 && oldX4 > 0 && oldX0 > -1 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX0); x0 := oldX3; x1 := oldX4 + (oldX2 + (1 + oldX5)); x2 := oldX2 + (1 + oldX5); TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := nondet(); oldX4 := nondet(); oldX5 := nondet(); assume(oldX5 > 0 && oldX4 > 0 && oldX0 > -1 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX0); x0 := oldX3; x1 := oldX4 + (oldX2 + (1 + oldX5)); x2 := oldX2 + (1 + oldX5); TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX6 := -(oldX0 - 0); oldX3 := nondet(); oldX4 := nondet(); oldX5 := nondet(); assume(oldX0 < 0 && oldX5 > 0 && oldX6 > 0 && oldX4 > 0 && oldX6 + oldX0 = 0 && oldX1 = oldX4 + (oldX2 + (1 + oldX5)) + oldX6); x0 := oldX3; x1 := oldX4 + (oldX2 + (1 + oldX5)); x2 := oldX2 + (1 + oldX5); TO: 1; ---------------------------------------- (11) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 4, 5, 6, 7 using the following rank functions: - Rank function 1: RF for loc. 5: 1+2*x1-2*x2 RF for loc. 6: 2*x1-2*x2 Bound for (chained) transitions 4: 6 Bound for (chained) transitions 5: 4 Bound for (chained) transitions 6: 6 Bound for (chained) transitions 7: 8 - Rank function 2: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (12) YES