25.11/7.62 YES 25.11/7.63 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 25.11/7.63 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 25.11/7.63 25.11/7.63 25.11/7.63 Termination of the given C Problem could be proven: 25.11/7.63 25.11/7.63 (0) C Problem 25.11/7.63 (1) CToLLVMProof [EQUIVALENT, 176 ms] 25.11/7.63 (2) LLVM problem 25.11/7.63 (3) LLVMToTerminationGraphProof [EQUIVALENT, 1668 ms] 25.11/7.63 (4) LLVM Symbolic Execution Graph 25.11/7.63 (5) SEGraph to IRS [EQUIVALENT, 125 ms] 25.11/7.63 (6) IntTRS 25.11/7.63 (7) IRS2T2 [EQUIVALENT, 0 ms] 25.11/7.63 (8) T2IntSys 25.11/7.63 (9) T2 [EQUIVALENT, 1635 ms] 25.11/7.63 (10) YES 25.11/7.63 25.11/7.63 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (0) 25.11/7.63 Obligation: 25.11/7.63 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (1) CToLLVMProof (EQUIVALENT) 25.11/7.63 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (2) 25.11/7.63 Obligation: 25.11/7.63 LLVM Problem 25.11/7.63 25.11/7.63 Aliases: 25.11/7.63 25.11/7.63 Data layout: 25.11/7.63 25.11/7.63 "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" 25.11/7.63 25.11/7.63 Machine: 25.11/7.63 25.11/7.63 "x86_64-pc-linux-gnu" 25.11/7.63 25.11/7.63 Type definitions: 25.11/7.63 25.11/7.63 Global variables: 25.11/7.63 25.11/7.63 Function declarations and definitions: 25.11/7.63 25.11/7.63 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 25.11/7.63 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 25.11/7.63 0: 25.11/7.63 %1 = alloca i32, align 4 25.11/7.63 %n = alloca i32, align 4 25.11/7.63 %m = alloca i32, align 4 25.11/7.63 %i = alloca i32, align 4 25.11/7.63 store 0, %1 25.11/7.63 %2 = call i32 @__VERIFIER_nondet_int() 25.11/7.63 store %2, %n 25.11/7.63 %3 = call i32 @__VERIFIER_nondet_int() 25.11/7.63 store %3, %m 25.11/7.63 %4 = load %m 25.11/7.63 %5 = icmp sgt %4 0 25.11/7.63 br %5, %6, %28 25.11/7.63 6: 25.11/7.63 %7 = load %n 25.11/7.63 %8 = load %m 25.11/7.63 %9 = icmp sgt %7 %8 25.11/7.63 br %9, %10, %28 25.11/7.63 10: 25.11/7.63 %11 = load %n 25.11/7.63 store %11, %i 25.11/7.63 br %12 25.11/7.63 12: 25.11/7.63 %13 = load %i 25.11/7.63 %14 = icmp sgt %13 0 25.11/7.63 br %14, %15, %27 25.11/7.63 15: 25.11/7.63 %16 = load %i 25.11/7.63 %17 = load %m 25.11/7.63 %18 = icmp slt %16 %17 25.11/7.63 br %18, %19, %22 25.11/7.63 19: 25.11/7.63 %20 = load %i 25.11/7.63 %21 = add %20 -1 25.11/7.63 store %21, %i 25.11/7.63 br %26 25.11/7.63 22: 25.11/7.63 %23 = load %m 25.11/7.63 %24 = load %i 25.11/7.63 %25 = sub %24 %23 25.11/7.63 store %25, %i 25.11/7.63 br %26 25.11/7.63 26: 25.11/7.63 br %12 25.11/7.63 27: 25.11/7.63 br %28 25.11/7.63 28: 25.11/7.63 ret 0 25.11/7.63 25.11/7.63 25.11/7.63 Analyze Termination of all function calls matching the pattern: 25.11/7.63 main() 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (3) LLVMToTerminationGraphProof (EQUIVALENT) 25.11/7.63 Constructed symbolic execution graph for LLVM program and proved memory safety. 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (4) 25.11/7.63 Obligation: 25.11/7.63 SE Graph 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (5) SEGraph to IRS (EQUIVALENT) 25.11/7.63 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 25.11/7.63 Generated rules. Obtained 88 rulesP rules: 25.11/7.63 f_117 -> f_118(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 25.11/7.63 f_118(v1, v2, 3, 1, 4) -> f_119(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 25.11/7.63 f_119(v1, v3, v2, v4, 3, 1, 4) -> f_120(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 25.11/7.63 f_120(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_121(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) :|: 1 <= v7 && v8 = 3 + v7 && 4 <= v8 25.11/7.63 f_121(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) -> f_122(v1, v3, v5, v7, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 25.11/7.63 f_122(v1, v3, v5, v7, v2, v4, v6, v8, 0, 3, 1, 4) -> f_123(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 25.11/7.63 f_123(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_124(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 25.11/7.63 f_124(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_125(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 25.11/7.63 f_125(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_126(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 25.11/7.63 f_126(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_127(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: 0 = 0 25.11/7.63 f_127(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_128(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: 0 < v11 25.11/7.63 f_127(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_129(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: v11 <= 0 25.11/7.63 f_128(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_130(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 25.11/7.63 f_129(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_131(v1, v3, v5, v7, v9, v11, 0, v2, v4, v6, v8, 3, 1, 4) :|: 0 = 0 25.11/7.63 f_130(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) -> f_132(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE 25.11/7.63 f_131(v1, v3, v5, v7, v9, v11, 0, v2, v4, v6, v8, 3, 1, 4) -> f_133(v1, v3, v5, v7, v9, v11, 0, v2, v4, v6, v8, 3, 1, 4) :|: TRUE 25.11/7.63 f_132(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) -> f_134(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 25.11/7.63 f_134(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) -> f_135(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 25.11/7.63 f_135(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) -> f_136(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: v11 < v9 && 2 <= v9 25.11/7.63 f_135(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) -> f_137(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) :|: v9 <= v11 25.11/7.63 f_136(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_138(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_137(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4) -> f_139(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4) :|: 0 = 0 25.11/7.63 f_138(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_140(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: TRUE 25.11/7.63 f_139(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4) -> f_141(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4) :|: TRUE 25.11/7.63 f_140(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_142(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_142(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_143(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: TRUE 25.11/7.63 f_143(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_144(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: TRUE 25.11/7.63 f_144(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_145(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_145(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_146(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_146(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_147(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: TRUE 25.11/7.63 f_147(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_148(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_148(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_149(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_149(v1, v3, v5, v7, v9, v11, 1, v2, v4, v6, v8, 0, 3, 4, 2) -> f_150(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_150(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) -> f_151(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) :|: TRUE 25.11/7.63 f_151(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) -> f_152(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_152(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) -> f_153(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) :|: 0 = 0 25.11/7.63 f_153(v1, v3, v5, v7, v9, v11, 1, 0, v2, v4, v6, v8, 3, 4, 2) -> f_154(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) :|: v14 + v11 = v9 && 1 <= v14 25.11/7.63 f_154(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) -> f_155(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) :|: TRUE 25.11/7.63 f_155(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) -> f_156(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) :|: TRUE 25.11/7.63 f_156(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) -> f_157(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) :|: TRUE 25.11/7.63 f_157(v1, v3, v5, v7, v9, v11, 1, 0, v14, v2, v4, v6, v8, 3, 4, 2) -> f_181(v1, v3, v5, v7, v9, v11, 1, v9, 0, v14, v2, v4, v6, v8, 3, 2, 4) :|: TRUE 25.11/7.63 f_181(v32, v33, v34, v35, v36, v37, 1, v39, 0, v41, v42, v43, v44, v45, 3, 2, 4) -> f_182(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_182(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) -> f_183(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) :|: 0 < v41 && 2 <= v39 25.11/7.63 f_182(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) -> f_184(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) :|: v41 <= 0 && v37 = v39 25.11/7.63 f_183(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) -> f_185(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_184(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) -> f_186(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_185(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) -> f_187(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_186(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) -> f_188(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_187(v32, v33, v34, v35, v36, v37, 1, v41, v39, 0, v42, v43, v44, v45, 3, 2, 4) -> f_189(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_188(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) -> f_190(v32, v33, v34, v35, v36, v39, 1, 0, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_189(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_191(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_191(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_192(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: v41 < v37 && 2 <= v37 && 3 <= v39 25.11/7.63 f_191(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_193(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: v37 <= v41 25.11/7.63 f_192(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_194(v32, v33, v34, v35, v36, v37, 1, v41, v39, v42, v43, v44, v45, 0, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_193(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_195(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_194(v32, v33, v34, v35, v36, v37, 1, v41, v39, v42, v43, v44, v45, 0, 3, 2, 4) -> f_196(v32, v33, v34, v35, v36, v37, 1, v41, v39, v42, v43, v44, v45, 0, 3, 2, 4) :|: TRUE 25.11/7.63 f_195(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_197(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_196(v32, v33, v34, v35, v36, v37, 1, v41, v39, v42, v43, v44, v45, 0, 3, 2, 4) -> f_198(v32, v33, v34, v35, v36, v37, 1, v41, v39, v42, v43, v44, v45, 0, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_197(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_199(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_198(v32, v33, v34, v35, v36, v37, 1, v41, v39, v42, v43, v44, v45, 0, 3, 2, 4) -> f_200(v32, v33, v34, v35, v36, v37, 1, v41, v39, v61, v42, v43, v44, v45, 0, 3, 2, 4) :|: 1 + v61 = v41 && 0 <= v61 25.11/7.63 f_199(v32, v33, v34, v35, v36, v37, 1, v41, 0, v39, v42, v43, v44, v45, 3, 2, 4) -> f_201(v32, v33, v34, v35, v36, v37, 1, v41, 0, v42, v43, v44, v45, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_200(v32, v33, v34, v35, v36, v37, 1, v41, v39, v61, v42, v43, v44, v45, 0, 3, 2, 4) -> f_202(v32, v33, v34, v35, v36, v37, 1, v41, v39, v61, v42, v43, v44, v45, 0, 3, 2, 4) :|: TRUE 25.11/7.63 f_201(v32, v33, v34, v35, v36, v37, 1, v41, 0, v42, v43, v44, v45, 3, 2, 4) -> f_203(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) :|: v63 + v37 = v41 && 0 <= v63 25.11/7.63 f_202(v32, v33, v34, v35, v36, v37, 1, v41, v39, v61, v42, v43, v44, v45, 0, 3, 2, 4) -> f_204(v32, v33, v34, v35, v36, v37, 1, v41, v39, v61, v42, v43, v44, v45, 0, 3, 2, 4) :|: TRUE 25.11/7.63 f_203(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) -> f_205(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_204(v32, v33, v34, v35, v36, v37, 1, v41, v39, v61, v42, v43, v44, v45, 0, 3, 2, 4) -> f_225(v32, v33, v34, v35, v36, v37, 1, v41, v39, v41, v61, v42, v43, v44, v45, 0, 3, 2, 4) :|: TRUE 25.11/7.63 f_205(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) -> f_207(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_207(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) -> f_209(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_209(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) -> f_181(v32, v33, v34, v35, v36, v37, 1, v41, 0, v63, v42, v43, v44, v45, 3, 2, 4) :|: TRUE 25.11/7.63 f_225(v134, v135, v136, v137, v138, v139, 1, v141, v142, v143, v144, v145, v146, v147, v148, 0, 3, 2, 4) -> f_243(v134, v135, v136, v137, v138, v139, 1, v141, v142, v143, v144, v145, v146, v147, v148, 0, 3, 2, 4) :|: TRUE 25.11/7.63 f_243(v211, v212, v213, v214, v215, v216, 1, v218, v219, v220, v221, v222, v223, v224, v225, 0, 3, 2, 4) -> f_244(v211, v212, v213, v214, v215, v216, 1, v218, v219, v220, v221, v222, v223, v224, v225, 0, 3, 2, 4) :|: TRUE 25.11/7.63 f_244(v211, v212, v213, v214, v215, v216, 1, v218, v219, v220, v221, v222, v223, v224, v225, 0, 3, 2, 4) -> f_245(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_245(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 4) -> f_246(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 0 < v221 && 2 <= v218 && 2 <= v220 && 5 <= v219 && 3 <= v216 25.11/7.63 f_245(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 4) -> f_247(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) :|: v221 <= 0 && v218 = 1 && v221 = 0 && 0 = 0 25.11/7.63 f_246(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_248(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 0 = 0 25.11/7.63 f_247(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) -> f_249(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) :|: 0 = 0 25.11/7.63 f_248(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_250(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: TRUE 25.11/7.63 f_249(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) -> f_251(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) :|: TRUE 25.11/7.63 f_250(v211, v212, v213, v214, v215, v216, 1, v221, v218, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_252(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 0 = 0 25.11/7.63 f_251(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) -> f_253(v211, v212, v213, v214, v215, v216, 1, 0, v219, v220, v222, v223, v224, v225, 3, 2, 4) :|: TRUE 25.11/7.63 f_252(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_254(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 0 = 0 25.11/7.63 f_254(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_255(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 0 = 0 25.11/7.63 f_255(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_256(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: TRUE 25.11/7.63 f_256(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v218, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_257(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 0 = 0 25.11/7.63 f_257(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_258(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: 1 + v270 = v221 && 0 <= v270 25.11/7.63 f_258(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_259(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: TRUE 25.11/7.63 f_259(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_260(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 5, 4) :|: TRUE 25.11/7.63 f_260(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 5, 4) -> f_243(v211, v212, v213, v214, v215, v216, 1, v221, v219, v220, v270, v222, v223, v224, v225, 0, 3, 2, 4) :|: TRUE 25.11/7.63 Combined rules. Obtained 8 rulesP rules: 25.11/7.63 f_182(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, v41:0, v37:0, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) -> f_190(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) :|: v41:0 < 1 25.11/7.63 f_182(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, v63:0 + v37:0, v39:0, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) -> f_182(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, v63:0, v63:0 + v37:0, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) :|: v39:0 > 1 && v63:0 + v37:0 > 0 && v63:0 > -1 && v63:0 + v37:0 >= v37:0 25.11/7.63 f_245(v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 1, 0, 1, v219:0, v220:0, v222:0, v223:0, v224:0, v225:0, 0, 3, 2, 4) -> f_253(v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 1, 0, v219:0, v220:0, v222:0, v223:0, v224:0, v225:0, 3, 2, 4) :|: TRUE 25.11/7.63 f_245(v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 1, 1 + v270:0, v218:0, v219:0, v220:0, v222:0, v223:0, v224:0, v225:0, 0, 3, 2, 4) -> f_245(v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 1, v270:0, 1 + v270:0, v219:0, v220:0, v222:0, v223:0, v224:0, v225:0, 0, 3, 2, 4) :|: v218:0 > 1 && v270:0 > -1 && v220:0 > 1 && v219:0 > 4 && v216:0 > 2 25.11/7.63 f_117 -> f_141(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 <= v11:0 && v11:0 > 0 25.11/7.63 f_117 -> f_133(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 < 1 25.11/7.63 f_117 -> f_182(v1:0, v3:0, v5:0, v7:0, v14:0 + v11:0, v11:0, 1, v14:0, v14:0 + v11:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 2, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 > 0 && v14:0 + v11:0 > 1 && v14:0 > 0 && v14:0 + v11:0 > v11:0 25.11/7.63 f_182(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, 1 + v61:0, v39:0, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) -> f_245(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, v61:0, 1 + v61:0, v39:0, 1 + v61:0, v42:0, v43:0, v44:0, v45:0, 0, 3, 2, 4) :|: v39:0 > 2 && v61:0 > -1 && v37:0 > 1 && v37:0 > 1 + v61:0 25.11/7.63 Filtered unneeded arguments: 25.11/7.63 f_182(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17) -> f_182(x6, x8, x9) 25.11/7.63 f_245(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_245(x6, x8, x9, x10, x11) 25.11/7.63 Removed division, modulo operations, cleaned up constraints. Obtained 8 rules.P rules: 25.11/7.63 f_182(v37:0, v41:0, v37:01) -> f_190(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) :|: v41:0 < 1 && v37:0 = v37:01 25.11/7.63 f_182(v37:0, sum~v63:0~v37:0, v39:0) -> f_182(v37:0, v63:0, v63:0 + v37:0) :|: v63:0 + v37:0 > 0 && v39:0 > 1 && v63:0 + v37:0 >= v37:0 && v63:0 > -1 && sum~v63:0~v37:0 = v63:0 + v37:0 25.11/7.63 f_245(v216:0, cons_0, cons_1, v219:0, v220:0) -> f_253(v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 1, 0, v219:0, v220:0, v222:0, v223:0, v224:0, v225:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 25.11/7.63 f_245(v216:0, sum~cons_1~v270:0, v218:0, v219:0, v220:0) -> f_245(v216:0, v270:0, 1 + v270:0, v219:0, v220:0) :|: v270:0 > -1 && v218:0 > 1 && v220:0 > 1 && v216:0 > 2 && v219:0 > 4 && sum~cons_1~v270:0 = 1 + v270:0 25.11/7.63 f_117 -> f_141(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 > 0 && v9:0 <= v11:0 25.11/7.63 f_117 -> f_133(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 1, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v11:0 < 1 && v7:0 > 0 25.11/7.63 f_117 -> f_182(v11:0, v14:0, v14:0 + v11:0) :|: v14:0 + v11:0 > 1 && v11:0 > 0 && v14:0 + v11:0 > v11:0 && v14:0 > 0 25.11/7.63 f_182(v37:0, sum~cons_1~v61:0, v39:0) -> f_245(v37:0, v61:0, 1 + v61:0, v39:0, 1 + v61:0) :|: v61:0 > -1 && v39:0 > 2 && v37:0 > 1 + v61:0 && v37:0 > 1 && sum~cons_1~v61:0 = 1 + v61:0 25.11/7.63 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (6) 25.11/7.63 Obligation: 25.11/7.63 Rules: 25.11/7.63 f_182(v37:0, v41:0, v37:01) -> f_190(v32:0, v33:0, v34:0, v35:0, v36:0, v37:0, 1, 0, v42:0, v43:0, v44:0, v45:0, 3, 2, 4) :|: v41:0 < 1 && v37:0 = v37:01 25.11/7.63 f_182(x, x1, x2) -> f_182(x, x3, x3 + x) :|: x3 + x > 0 && x2 > 1 && x3 + x >= x && x3 > -1 && x1 = x3 + x 25.11/7.63 f_245(v216:0, cons_0, cons_1, v219:0, v220:0) -> f_253(v211:0, v212:0, v213:0, v214:0, v215:0, v216:0, 1, 0, v219:0, v220:0, v222:0, v223:0, v224:0, v225:0, 3, 2, 4) :|: TRUE && cons_0 = 0 && cons_1 = 1 25.11/7.63 f_245(x4, x5, x6, x7, x8) -> f_245(x4, x9, 1 + x9, x7, x8) :|: x9 > -1 && x6 > 1 && x8 > 1 && x4 > 2 && x7 > 4 && x5 = 1 + x9 25.11/7.63 f_117 -> f_141(v1:0, v3:0, v5:0, v7:0, v9:0, v11:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3 + v7:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v5:0 > 0 && v7:0 > 0 && v11:0 > 0 && v9:0 <= v11:0 25.11/7.63 f_117 -> f_133(x10, x11, x12, x13, x14, x15, 0, 3 + x10, 3 + x11, 3 + x12, 3 + x13, 3, 1, 4) :|: x10 > 0 && x11 > 0 && x12 > 0 && x15 < 1 && x13 > 0 25.11/7.63 f_117 -> f_182(x16, x17, x17 + x16) :|: x17 + x16 > 1 && x16 > 0 && x17 + x16 > x16 && x17 > 0 25.11/7.63 f_182(x18, x19, x20) -> f_245(x18, x21, 1 + x21, x20, 1 + x21) :|: x21 > -1 && x20 > 2 && x18 > 1 + x21 && x18 > 1 && x19 = 1 + x21 25.11/7.63 Start term: f_117 25.11/7.63 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (7) IRS2T2 (EQUIVALENT) 25.11/7.63 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 25.11/7.63 25.11/7.63 (f_182_17,1) 25.11/7.63 (f_190_17,2) 25.11/7.63 (f_245_17,3) 25.11/7.63 (f_253_17,4) 25.11/7.63 (f_117_17,5) 25.11/7.63 (f_141_17,6) 25.11/7.63 (f_133_17,7) 25.11/7.63 25.11/7.63 ---------------------------------------- 25.11/7.63 25.11/7.63 (8) 25.11/7.63 Obligation: 25.11/7.63 START: 5; 25.11/7.63 25.11/7.63 FROM: 1; 25.11/7.63 oldX0 := x0; 25.11/7.63 oldX1 := x1; 25.11/7.63 oldX2 := x2; 25.11/7.63 oldX3 := x3; 25.11/7.63 oldX4 := x4; 25.11/7.63 oldX5 := x5; 25.11/7.63 oldX6 := x6; 25.11/7.63 oldX7 := x7; 25.11/7.63 oldX8 := x8; 25.11/7.63 oldX9 := x9; 25.11/7.63 oldX10 := x10; 25.11/7.63 oldX11 := x11; 25.11/7.63 oldX12 := x12; 25.11/7.63 oldX13 := x13; 25.11/7.63 oldX14 := x14; 25.11/7.63 oldX15 := x15; 25.11/7.63 oldX16 := x16; 25.11/7.63 oldX17 := nondet(); 25.11/7.63 oldX18 := nondet(); 25.11/7.63 oldX19 := nondet(); 25.11/7.63 oldX20 := nondet(); 25.11/7.63 oldX21 := nondet(); 25.11/7.63 oldX22 := nondet(); 25.11/7.63 oldX23 := nondet(); 25.11/7.63 oldX24 := nondet(); 25.11/7.63 oldX25 := nondet(); 25.11/7.63 oldX26 := nondet(); 25.11/7.63 oldX27 := nondet(); 25.11/7.63 assume(oldX1 < 1 && oldX0 = oldX2); 25.11/7.63 x0 := oldX17; 25.11/7.63 x1 := oldX18; 25.11/7.63 x2 := oldX19; 25.11/7.63 x3 := oldX20; 25.11/7.63 x4 := oldX21; 25.11/7.63 x5 := oldX0; 25.11/7.63 x6 := 1; 25.11/7.63 x7 := 0; 25.11/7.63 x8 := oldX22; 25.11/7.63 x9 := oldX23; 25.11/7.63 x10 := oldX24; 25.11/7.63 x11 := oldX25; 25.11/7.63 x12 := 3; 25.11/7.63 x13 := 2; 25.11/7.63 x14 := 4; 25.11/7.63 x15 := oldX26; 25.11/7.63 x16 := oldX27; 25.11/7.63 TO: 2; 25.11/7.63 25.11/7.63 FROM: 1; 25.11/7.63 oldX0 := x0; 25.11/7.63 oldX1 := x1; 25.11/7.63 oldX2 := x2; 25.11/7.63 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := oldX1 - oldX0; 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 oldX26 := nondet(); 25.11/7.64 oldX27 := nondet(); 25.11/7.64 oldX28 := nondet(); 25.11/7.64 oldX29 := nondet(); 25.11/7.64 oldX30 := nondet(); 25.11/7.64 oldX31 := nondet(); 25.11/7.64 assume(oldX17 + oldX0 > 0 && oldX2 > 1 && oldX17 + oldX0 >= oldX0 && oldX17 > -1 && oldX1 = oldX17 + oldX0); 25.11/7.64 x0 := oldX0; 25.11/7.64 x1 := oldX1 - oldX0; 25.11/7.64 x2 := oldX17 + oldX0; 25.11/7.64 x3 := oldX18; 25.11/7.64 x4 := oldX19; 25.11/7.64 x5 := oldX20; 25.11/7.64 x6 := oldX21; 25.11/7.64 x7 := oldX22; 25.11/7.64 x8 := oldX23; 25.11/7.64 x9 := oldX24; 25.11/7.64 x10 := oldX25; 25.11/7.64 x11 := oldX26; 25.11/7.64 x12 := oldX27; 25.11/7.64 x13 := oldX28; 25.11/7.64 x14 := oldX29; 25.11/7.64 x15 := oldX30; 25.11/7.64 x16 := oldX31; 25.11/7.64 TO: 1; 25.11/7.64 25.11/7.64 FROM: 3; 25.11/7.64 oldX0 := x0; 25.11/7.64 oldX1 := x1; 25.11/7.64 oldX2 := x2; 25.11/7.64 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := nondet(); 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 assume(0 = 0 && oldX1 = 0 && oldX2 = 1); 25.11/7.64 x0 := oldX17; 25.11/7.64 x1 := oldX18; 25.11/7.64 x2 := oldX19; 25.11/7.64 x3 := oldX20; 25.11/7.64 x4 := oldX21; 25.11/7.64 x5 := oldX0; 25.11/7.64 x6 := 1; 25.11/7.64 x7 := 0; 25.11/7.64 x8 := oldX3; 25.11/7.64 x9 := oldX4; 25.11/7.64 x10 := oldX22; 25.11/7.64 x11 := oldX23; 25.11/7.64 x12 := oldX24; 25.11/7.64 x13 := oldX25; 25.11/7.64 x14 := 3; 25.11/7.64 x15 := 2; 25.11/7.64 x16 := 4; 25.11/7.64 TO: 4; 25.11/7.64 25.11/7.64 FROM: 3; 25.11/7.64 oldX0 := x0; 25.11/7.64 oldX1 := x1; 25.11/7.64 oldX2 := x2; 25.11/7.64 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := oldX1 - 1; 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 oldX26 := nondet(); 25.11/7.64 oldX27 := nondet(); 25.11/7.64 oldX28 := nondet(); 25.11/7.64 oldX29 := nondet(); 25.11/7.64 assume(oldX17 > -1 && oldX2 > 1 && oldX4 > 1 && oldX0 > 2 && oldX3 > 4 && oldX1 = 1 + oldX17); 25.11/7.64 x0 := oldX0; 25.11/7.64 x1 := oldX1 - 1; 25.11/7.64 x2 := 1 + oldX17; 25.11/7.64 x3 := oldX3; 25.11/7.64 x4 := oldX4; 25.11/7.64 x5 := oldX18; 25.11/7.64 x6 := oldX19; 25.11/7.64 x7 := oldX20; 25.11/7.64 x8 := oldX21; 25.11/7.64 x9 := oldX22; 25.11/7.64 x10 := oldX23; 25.11/7.64 x11 := oldX24; 25.11/7.64 x12 := oldX25; 25.11/7.64 x13 := oldX26; 25.11/7.64 x14 := oldX27; 25.11/7.64 x15 := oldX28; 25.11/7.64 x16 := oldX29; 25.11/7.64 TO: 3; 25.11/7.64 25.11/7.64 FROM: 5; 25.11/7.64 oldX0 := x0; 25.11/7.64 oldX1 := x1; 25.11/7.64 oldX2 := x2; 25.11/7.64 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := nondet(); 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 assume(oldX17 > 0 && oldX18 > 0 && oldX19 > 0 && oldX20 > 0 && oldX22 > 0 && oldX21 <= oldX22); 25.11/7.64 x0 := oldX17; 25.11/7.64 x1 := oldX18; 25.11/7.64 x2 := oldX19; 25.11/7.64 x3 := oldX20; 25.11/7.64 x4 := oldX21; 25.11/7.64 x5 := oldX22; 25.11/7.64 x6 := 1; 25.11/7.64 x7 := 0; 25.11/7.64 x8 := 3 + oldX17; 25.11/7.64 x9 := 3 + oldX18; 25.11/7.64 x10 := 3 + oldX19; 25.11/7.64 x11 := 3 + oldX20; 25.11/7.64 x12 := 3; 25.11/7.64 x13 := 4; 25.11/7.64 x14 := oldX23; 25.11/7.64 x15 := oldX24; 25.11/7.64 x16 := oldX25; 25.11/7.64 TO: 6; 25.11/7.64 25.11/7.64 FROM: 5; 25.11/7.64 oldX0 := x0; 25.11/7.64 oldX1 := x1; 25.11/7.64 oldX2 := x2; 25.11/7.64 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := nondet(); 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 assume(oldX17 > 0 && oldX18 > 0 && oldX19 > 0 && oldX22 < 1 && oldX20 > 0); 25.11/7.64 x0 := oldX17; 25.11/7.64 x1 := oldX18; 25.11/7.64 x2 := oldX19; 25.11/7.64 x3 := oldX20; 25.11/7.64 x4 := oldX21; 25.11/7.64 x5 := oldX22; 25.11/7.64 x6 := 0; 25.11/7.64 x7 := 3 + oldX17; 25.11/7.64 x8 := 3 + oldX18; 25.11/7.64 x9 := 3 + oldX19; 25.11/7.64 x10 := 3 + oldX20; 25.11/7.64 x11 := 3; 25.11/7.64 x12 := 1; 25.11/7.64 x13 := 4; 25.11/7.64 x14 := oldX23; 25.11/7.64 x15 := oldX24; 25.11/7.64 x16 := oldX25; 25.11/7.64 TO: 7; 25.11/7.64 25.11/7.64 FROM: 5; 25.11/7.64 oldX0 := x0; 25.11/7.64 oldX1 := x1; 25.11/7.64 oldX2 := x2; 25.11/7.64 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := nondet(); 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 oldX26 := nondet(); 25.11/7.64 oldX27 := nondet(); 25.11/7.64 oldX28 := nondet(); 25.11/7.64 oldX29 := nondet(); 25.11/7.64 oldX30 := nondet(); 25.11/7.64 oldX31 := nondet(); 25.11/7.64 oldX32 := nondet(); 25.11/7.64 assume(oldX18 + oldX17 > 1 && oldX17 > 0 && oldX18 + oldX17 > oldX17 && oldX18 > 0); 25.11/7.64 x0 := oldX17; 25.11/7.64 x1 := oldX18; 25.11/7.64 x2 := oldX18 + oldX17; 25.11/7.64 x3 := oldX19; 25.11/7.64 x4 := oldX20; 25.11/7.64 x5 := oldX21; 25.11/7.64 x6 := oldX22; 25.11/7.64 x7 := oldX23; 25.11/7.64 x8 := oldX24; 25.11/7.64 x9 := oldX25; 25.11/7.64 x10 := oldX26; 25.11/7.64 x11 := oldX27; 25.11/7.64 x12 := oldX28; 25.11/7.64 x13 := oldX29; 25.11/7.64 x14 := oldX30; 25.11/7.64 x15 := oldX31; 25.11/7.64 x16 := oldX32; 25.11/7.64 TO: 1; 25.11/7.64 25.11/7.64 FROM: 1; 25.11/7.64 oldX0 := x0; 25.11/7.64 oldX1 := x1; 25.11/7.64 oldX2 := x2; 25.11/7.64 oldX3 := x3; 25.11/7.64 oldX4 := x4; 25.11/7.64 oldX5 := x5; 25.11/7.64 oldX6 := x6; 25.11/7.64 oldX7 := x7; 25.11/7.64 oldX8 := x8; 25.11/7.64 oldX9 := x9; 25.11/7.64 oldX10 := x10; 25.11/7.64 oldX11 := x11; 25.11/7.64 oldX12 := x12; 25.11/7.64 oldX13 := x13; 25.11/7.64 oldX14 := x14; 25.11/7.64 oldX15 := x15; 25.11/7.64 oldX16 := x16; 25.11/7.64 oldX17 := oldX1 - 1; 25.11/7.64 oldX18 := nondet(); 25.11/7.64 oldX19 := nondet(); 25.11/7.64 oldX20 := nondet(); 25.11/7.64 oldX21 := nondet(); 25.11/7.64 oldX22 := nondet(); 25.11/7.64 oldX23 := nondet(); 25.11/7.64 oldX24 := nondet(); 25.11/7.64 oldX25 := nondet(); 25.11/7.64 oldX26 := nondet(); 25.11/7.64 oldX27 := nondet(); 25.11/7.64 oldX28 := nondet(); 25.11/7.64 oldX29 := nondet(); 25.11/7.64 assume(oldX17 > -1 && oldX2 > 2 && oldX0 > 1 + oldX17 && oldX0 > 1 && oldX1 = 1 + oldX17); 25.11/7.64 x0 := oldX0; 25.11/7.64 x1 := oldX1 - 1; 25.11/7.64 x2 := 1 + oldX17; 25.11/7.64 x3 := oldX2; 25.11/7.64 x4 := 1 + oldX17; 25.11/7.64 x5 := oldX18; 25.11/7.64 x6 := oldX19; 25.11/7.64 x7 := oldX20; 25.11/7.64 x8 := oldX21; 25.11/7.64 x9 := oldX22; 25.11/7.64 x10 := oldX23; 25.11/7.64 x11 := oldX24; 25.11/7.64 x12 := oldX25; 25.11/7.64 x13 := oldX26; 25.11/7.64 x14 := oldX27; 25.11/7.64 x15 := oldX28; 25.11/7.64 x16 := oldX29; 25.11/7.64 TO: 3; 25.11/7.64 25.11/7.64 25.11/7.64 ---------------------------------------- 25.11/7.64 25.11/7.64 (9) T2 (EQUIVALENT) 25.11/7.64 Initially, performed program simplifications using lexicographic rank functions: 25.11/7.64 * Removed transitions 19, 21, 22 using the following rank functions: 25.11/7.64 - Rank function 1: 25.11/7.64 RF for loc. 11: 1+2*x1 25.11/7.64 RF for loc. 16: 2*x1 25.11/7.64 Bound for (chained) transitions 21: 2 25.11/7.64 Bound for (chained) transitions 22: 2 25.11/7.64 - Rank function 2: 25.11/7.64 RF for loc. 11: 0 25.11/7.64 RF for loc. 16: -1 25.11/7.64 Bound for (chained) transitions 19: 0 25.11/7.64 Used the following cutpoint-specific lexicographic rank functions: 25.11/7.64 * For cutpoint 10, used the following rank functions/bounds (in descending priority order): 25.11/7.64 - RF x1+x0, bound 0 25.11/7.64 25.11/7.64 ---------------------------------------- 25.11/7.64 25.11/7.64 (10) 25.11/7.64 YES 25.33/7.74 EOF