23.84/6.65 YES 24.06/6.67 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 24.06/6.67 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 24.06/6.67 24.06/6.67 24.06/6.67 Termination of the given C Problem could be proven: 24.06/6.67 24.06/6.67 (0) C Problem 24.06/6.67 (1) CToLLVMProof [EQUIVALENT, 147 ms] 24.06/6.67 (2) LLVM problem 24.06/6.67 (3) LLVMToTerminationGraphProof [EQUIVALENT, 650 ms] 24.06/6.67 (4) LLVM Symbolic Execution Graph 24.06/6.67 (5) SEGraph to IRS [EQUIVALENT, 121 ms] 24.06/6.67 (6) IntTRS 24.06/6.67 (7) IRS2T2 [EQUIVALENT, 0 ms] 24.06/6.67 (8) T2IntSys 24.06/6.67 (9) T2 [EQUIVALENT, 1564 ms] 24.06/6.67 (10) YES 24.06/6.67 24.06/6.67 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (0) 24.06/6.67 Obligation: 24.06/6.67 c file /export/starexec/sandbox/benchmark/theBenchmark.c 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (1) CToLLVMProof (EQUIVALENT) 24.06/6.67 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (2) 24.06/6.67 Obligation: 24.06/6.67 LLVM Problem 24.06/6.67 24.06/6.67 Aliases: 24.06/6.67 24.06/6.67 Data layout: 24.06/6.67 24.06/6.67 "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" 24.06/6.67 24.06/6.67 Machine: 24.06/6.67 24.06/6.67 "x86_64-pc-linux-gnu" 24.06/6.67 24.06/6.67 Type definitions: 24.06/6.67 24.06/6.67 Global variables: 24.06/6.67 24.06/6.67 Function declarations and definitions: 24.06/6.67 24.06/6.67 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 24.06/6.67 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 24.06/6.67 0: 24.06/6.67 %1 = alloca i32, align 4 24.06/6.67 %x = alloca i32, align 4 24.06/6.67 %M = alloca i32, align 4 24.06/6.67 store 0, %1 24.06/6.67 %2 = call i32 @__VERIFIER_nondet_int() 24.06/6.67 store %2, %x 24.06/6.67 %3 = call i32 @__VERIFIER_nondet_int() 24.06/6.67 store %3, %M 24.06/6.67 %4 = load %M 24.06/6.67 %5 = icmp sgt %4 0 24.06/6.67 br %5, %6, %21 24.06/6.67 6: 24.06/6.67 br %7 24.06/6.67 7: 24.06/6.67 %8 = load %x 24.06/6.67 %9 = load %M 24.06/6.67 %10 = icmp ne %8 %9 24.06/6.67 br %10, %11, %20 24.06/6.67 11: 24.06/6.67 %12 = load %x 24.06/6.67 %13 = load %M 24.06/6.67 %14 = icmp sgt %12 %13 24.06/6.67 br %14, %15, %16 24.06/6.67 15: 24.06/6.67 store 0, %x 24.06/6.67 br %19 24.06/6.67 16: 24.06/6.67 %17 = load %x 24.06/6.67 %18 = add %17 1 24.06/6.67 store %18, %x 24.06/6.67 br %19 24.06/6.67 19: 24.06/6.67 br %7 24.06/6.67 20: 24.06/6.67 br %21 24.06/6.67 21: 24.06/6.67 ret 0 24.06/6.67 24.06/6.67 24.06/6.67 Analyze Termination of all function calls matching the pattern: 24.06/6.67 main() 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (3) LLVMToTerminationGraphProof (EQUIVALENT) 24.06/6.67 Constructed symbolic execution graph for LLVM program and proved memory safety. 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (4) 24.06/6.67 Obligation: 24.06/6.67 SE Graph 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (5) SEGraph to IRS (EQUIVALENT) 24.06/6.67 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 24.06/6.67 Generated rules. Obtained 77 rulesP rules: 24.06/6.67 f_90 -> f_91(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 24.06/6.67 f_91(v1, v2, 3, 1, 4) -> f_92(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 24.06/6.67 f_92(v1, v3, v2, v4, 3, 1, 4) -> f_93(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 24.06/6.67 f_93(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_94(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) :|: TRUE 24.06/6.67 f_94(v1, v3, v5, v2, v4, v6, 0, 3, 1, 4) -> f_95(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE 24.06/6.67 f_95(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_96(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) :|: TRUE 24.06/6.67 f_96(v1, v3, v5, v7, v2, v4, v6, 0, 3, 1, 4) -> f_97(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) :|: TRUE 24.06/6.67 f_97(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) -> f_98(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) :|: TRUE 24.06/6.67 f_98(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) -> f_99(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) :|: 0 = 0 24.06/6.67 f_99(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) -> f_100(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) :|: 0 < v9 24.06/6.67 f_99(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) -> f_101(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) :|: v9 <= 0 24.06/6.67 f_100(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) -> f_102(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 24.06/6.67 f_101(v1, v3, v5, v7, v9, v2, v4, v6, 0, 3, 1, 4) -> f_103(v1, v3, v5, v7, v9, 0, v2, v4, v6, 3, 1, 4) :|: 0 = 0 24.06/6.67 f_102(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_104(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: TRUE 24.06/6.67 f_103(v1, v3, v5, v7, v9, 0, v2, v4, v6, 3, 1, 4) -> f_105(v1, v3, v5, v7, v9, 0, v2, v4, v6, 3, 1, 4) :|: TRUE 24.06/6.67 f_104(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_106(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: TRUE 24.06/6.67 f_106(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_107(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 24.06/6.67 f_107(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_108(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 24.06/6.67 f_108(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_109(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: v7 != v9 24.06/6.67 f_108(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_110(v1, v3, v5, v9, 1, v2, v4, v6, 0, 3, 4) :|: v7 = v9 24.06/6.67 f_109(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_111(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 24.06/6.67 f_110(v1, v3, v5, v9, 1, v2, v4, v6, 0, 3, 4) -> f_112(v1, v3, v5, v9, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 24.06/6.67 f_111(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_113(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: TRUE 24.06/6.67 f_112(v1, v3, v5, v9, 1, 0, v2, v4, v6, 3, 4) -> f_114(v1, v3, v5, v9, 1, 0, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_113(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_115(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 24.06/6.67 f_114(v1, v3, v5, v9, 1, 0, v2, v4, v6, 3, 4) -> f_116(v1, v3, v5, v9, 1, 0, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_115(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_117(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: 0 = 0 24.06/6.67 f_117(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_118(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) :|: v9 < v7 && 2 <= v7 24.06/6.67 f_117(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_119(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) :|: v7 <= v9 24.06/6.67 f_118(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) -> f_120(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_119(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4) -> f_121(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 24.06/6.67 f_120(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) -> f_122(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) :|: TRUE 24.06/6.67 f_121(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4) -> f_123(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_122(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) -> f_124(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) :|: TRUE 24.06/6.67 f_123(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4) -> f_125(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4) :|: 0 = 0 24.06/6.67 f_124(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) -> f_126(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) :|: TRUE 24.06/6.67 f_125(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4) -> f_127(v1, v3, v5, v7, v9, 1, 0, v11, v2, v4, v6, 3, 4) :|: v11 = 1 + v7 24.06/6.67 f_126(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) -> f_128(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) :|: TRUE 24.06/6.67 f_127(v1, v3, v5, v7, v9, 1, 0, v11, v2, v4, v6, 3, 4) -> f_129(v1, v3, v5, v7, v9, 1, 0, v11, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_128(v1, v3, v5, v7, v9, 1, v2, v4, v6, 0, 3, 4, 2) -> f_130(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_129(v1, v3, v5, v7, v9, 1, 0, v11, v2, v4, v6, 3, 4) -> f_131(v1, v3, v5, v7, v9, 1, 0, v11, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_130(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_132(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_131(v1, v3, v5, v7, v9, 1, 0, v11, v2, v4, v6, 3, 4) -> f_177(v1, v3, v5, v7, v9, 1, v7, 0, v11, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_132(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_134(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_134(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_136(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE 24.06/6.67 f_136(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_138(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_138(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_141(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_141(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_144(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_144(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_147(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE 24.06/6.67 f_147(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_150(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_150(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_152(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: 0 = 0 24.06/6.67 f_152(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_154(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE 24.06/6.67 f_154(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_156(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE 24.06/6.67 f_156(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_158(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) :|: TRUE 24.06/6.67 f_158(v1, v3, v5, v7, v9, 1, 0, v2, v4, v6, 3, 4, 2) -> f_159(v1, v3, v5, v7, v9, 1, 0, 0, 1, v2, v4, v6, 3, 4) :|: TRUE 24.06/6.67 f_159(v39, v40, v41, v42, v43, 1, v45, 0, v47, v48, v49, v50, 3, 4) -> f_179(v39, v40, v41, v42, v43, 1, v45, 0, v47, v48, v49, v50, 3, 4) :|: TRUE 24.06/6.67 f_177(v72, v73, v74, v75, v76, 1, v78, 0, v80, v81, v82, v83, 3, 4) -> f_197(v72, v73, v74, v75, v76, 1, v78, 0, v80, v81, v82, v83, 3, 4) :|: TRUE 24.06/6.67 f_179(v103, v104, v105, v106, v107, 1, v109, 0, v111, v112, v113, v114, 3, 4) -> f_180(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_180(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) -> f_181(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_181(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) -> f_182(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) :|: v111 != v107 24.06/6.67 f_181(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) -> f_183(v103, v104, v105, v106, v107, 1, v109, 0, v112, v113, v114, 3, 4) :|: v111 = v107 && 0 <= v109 24.06/6.67 f_182(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) -> f_184(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_183(v103, v104, v105, v106, v107, 1, v109, 0, v112, v113, v114, 3, 4) -> f_185(v103, v104, v105, v106, v107, 1, 0, v109, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_184(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) -> f_186(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_185(v103, v104, v105, v106, v107, 1, 0, v109, v112, v113, v114, 3, 4) -> f_187(v103, v104, v105, v106, v107, 1, 0, v109, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_186(v103, v104, v105, v106, v107, 1, v111, v109, 0, v112, v113, v114, 3, 4) -> f_188(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_187(v103, v104, v105, v106, v107, 1, 0, v109, v112, v113, v114, 3, 4) -> f_189(v103, v104, v105, v106, v107, 1, 0, v109, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_188(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) -> f_190(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_190(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) -> f_191(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_191(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) -> f_192(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_192(v103, v104, v105, v106, v107, 1, v111, 0, v109, v112, v113, v114, 3, 4) -> f_193(v103, v104, v105, v106, v107, 1, v111, 0, v112, v113, v114, 3, 4) :|: 0 = 0 24.06/6.67 f_193(v103, v104, v105, v106, v107, 1, v111, 0, v112, v113, v114, 3, 4) -> f_194(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) :|: v124 = 1 + v111 24.06/6.67 f_194(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) -> f_195(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_195(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) -> f_196(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_196(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) -> f_197(v103, v104, v105, v106, v107, 1, v111, 0, v124, v112, v113, v114, 3, 4) :|: TRUE 24.06/6.67 f_197(v138, v139, v140, v141, v142, 1, v144, 0, v146, v147, v148, v149, 3, 4) -> f_198(v138, v139, v140, v141, v142, 1, v144, 0, v146, v147, v148, v149, 3, 4) :|: TRUE 24.06/6.67 f_198(v138, v139, v140, v141, v142, 1, v144, 0, v146, v147, v148, v149, 3, 4) -> f_179(v138, v139, v140, v141, v142, 1, v144, 0, v146, v147, v148, v149, 3, 4) :|: TRUE 24.06/6.67 Combined rules. Obtained 9 rulesP rules: 24.06/6.67 f_90 -> f_116(v1:0, v3:0, v5:0, v7:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 24.06/6.67 f_90 -> f_105(v1:0, v3:0, v5:0, v7:0, v9:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v9:0 < 1 24.06/6.67 f_90 -> f_181(v1:0, v3:0, v5:0, v7:0, v9:0, 1, 1 + v7:0, v7:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v9:0 > v7:0 && v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v9:0 > 0 24.06/6.67 f_90 -> f_181(v1:0, v3:0, v5:0, v7:0, v9:0, 1, v11:0, v7:0, 0, v2:0, v4:0, v6:0, 3, 4) :|: FALSE 24.06/6.67 f_90 -> f_181(v1:0, v3:0, v5:0, v7:0, v9:0, 1, 1, 0, 0, v2:0, v4:0, v6:0, 3, 4) :|: FALSE 24.06/6.67 f_90 -> f_181(v1:0, v3:0, v5:0, v7:0, v9:0, 1, 1, 0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v9:0 > 0 && v9:0 < v7:0 && v7:0 > 1 24.06/6.67 f_181(v103:0, v104:0, v105:0, v106:0, v107:0, 1, v111:0, v109:0, 0, v112:0, v113:0, v114:0, 3, 4) -> f_181(v103:0, v104:0, v105:0, v106:0, v107:0, 1, 1 + v111:0, v111:0, 0, v112:0, v113:0, v114:0, 3, 4) :|: v111:0 < v107:0 24.06/6.67 f_181(v103:0, v104:0, v105:0, v106:0, v107:0, 1, v111:0, v109:0, 0, v112:0, v113:0, v114:0, 3, 4) -> f_181(v103:0, v104:0, v105:0, v106:0, v107:0, 1, 1 + v111:0, v111:0, 0, v112:0, v113:0, v114:0, 3, 4) :|: v111:0 > v107:0 24.06/6.67 f_181(v103:0, v104:0, v105:0, v106:0, v107:0, 1, v107:0, v109:0, 0, v112:0, v113:0, v114:0, 3, 4) -> f_189(v103:0, v104:0, v105:0, v106:0, v107:0, 1, 0, v109:0, v112:0, v113:0, v114:0, 3, 4) :|: v109:0 > -1 24.06/6.67 Filtered unneeded arguments: 24.06/6.67 f_181(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) -> f_181(x4, x5, x7, x8) 24.06/6.67 Removed division, modulo operations, cleaned up constraints. Obtained 9 rules.P rules: 24.06/6.67 f_90 -> f_116(v1:0, v3:0, v5:0, v7:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v7:0 > 0 && v5:0 > 0 24.06/6.67 f_90 -> f_105(v1:0, v3:0, v5:0, v7:0, v9:0, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 1, 4) :|: v1:0 > 0 && v3:0 > 0 && v9:0 < 1 && v5:0 > 0 24.06/6.67 f_90 -> f_181(v7:0, v9:0, 1 + v7:0, v7:0) :|: v9:0 > v7:0 && v9:0 > 0 24.06/6.67 f_90 -> f_181(v7:0, v9:0, v11:0, v7:0) :|: FALSE 24.06/6.67 f_90 -> f_181(v7:0, v9:0, 1, 0) :|: FALSE 24.06/6.67 f_90 -> f_181(v7:0, v9:0, 1, 0) :|: v9:0 < v7:0 && v7:0 > 1 && v9:0 > 0 24.06/6.67 f_181(v106:0, v107:0, v111:0, v109:0) -> f_181(v106:0, v107:0, 1 + v111:0, v111:0) :|: v111:0 < v107:0 24.06/6.67 f_181(v106:0, v107:0, v111:0, v109:0) -> f_181(v106:0, v107:0, 1 + v111:0, v111:0) :|: v111:0 > v107:0 24.06/6.67 f_181(v106:0, v107:0, v107:01, v109:0) -> f_189(v103:0, v104:0, v105:0, v106:0, v107:0, 1, 0, v109:0, v112:0, v113:0, v114:0, 3, 4) :|: v109:0 > -1 && v107:0 = v107:01 24.06/6.67 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (6) 24.06/6.67 Obligation: 24.06/6.67 Rules: 24.06/6.67 f_90 -> f_116(v1:0, v3:0, v5:0, v7:0, 1, 0, 3 + v1:0, 3 + v3:0, 3 + v5:0, 3, 4) :|: v1:0 > 0 && v3:0 > 0 && v7:0 > 0 && v5:0 > 0 24.06/6.67 f_90 -> f_105(x, x1, x2, x3, x4, 0, 3 + x, 3 + x1, 3 + x2, 3, 1, 4) :|: x > 0 && x1 > 0 && x4 < 1 && x2 > 0 24.06/6.67 f_90 -> f_181(x5, x6, 1 + x5, x5) :|: x6 > x5 && x6 > 0 24.06/6.67 f_90 -> f_181(x7, x8, x9, x7) :|: FALSE 24.06/6.67 f_90 -> f_181(x10, x11, 1, 0) :|: FALSE 24.06/6.67 f_90 -> f_181(x12, x13, 1, 0) :|: x13 < x12 && x12 > 1 && x13 > 0 24.06/6.67 f_181(v106:0, v107:0, v111:0, v109:0) -> f_181(v106:0, v107:0, 1 + v111:0, v111:0) :|: v111:0 < v107:0 24.06/6.67 f_181(x14, x15, x16, x17) -> f_181(x14, x15, 1 + x16, x16) :|: x16 > x15 24.06/6.67 f_181(x18, x19, x20, x21) -> f_189(x22, x23, x24, x18, x19, 1, 0, x21, x25, x26, x27, 3, 4) :|: x21 > -1 && x19 = x20 24.06/6.67 Start term: f_90 24.06/6.67 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (7) IRS2T2 (EQUIVALENT) 24.06/6.67 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 24.06/6.67 24.06/6.67 (f_90_13,1) 24.06/6.67 (f_116_13,2) 24.06/6.67 (f_105_13,3) 24.06/6.67 (f_181_13,4) 24.06/6.67 (f_189_13,5) 24.06/6.67 24.06/6.67 ---------------------------------------- 24.06/6.67 24.06/6.67 (8) 24.06/6.67 Obligation: 24.06/6.67 START: 1; 24.06/6.67 24.06/6.67 FROM: 1; 24.06/6.67 oldX0 := x0; 24.06/6.67 oldX1 := x1; 24.06/6.67 oldX2 := x2; 24.06/6.67 oldX3 := x3; 24.06/6.67 oldX4 := x4; 24.06/6.67 oldX5 := x5; 24.06/6.67 oldX6 := x6; 24.06/6.67 oldX7 := x7; 24.06/6.67 oldX8 := x8; 24.06/6.67 oldX9 := x9; 24.06/6.67 oldX10 := x10; 24.06/6.67 oldX11 := x11; 24.06/6.67 oldX12 := x12; 24.06/6.67 oldX13 := nondet(); 24.06/6.67 oldX14 := nondet(); 24.06/6.67 oldX15 := nondet(); 24.06/6.67 oldX16 := nondet(); 24.06/6.67 oldX17 := nondet(); 24.06/6.67 oldX18 := nondet(); 24.06/6.67 assume(oldX13 > 0 && oldX14 > 0 && oldX16 > 0 && oldX15 > 0); 24.06/6.67 x0 := oldX13; 24.06/6.67 x1 := oldX14; 24.06/6.67 x2 := oldX15; 24.06/6.67 x3 := oldX16; 24.06/6.67 x4 := 1; 24.06/6.67 x5 := 0; 24.06/6.67 x6 := 3 + oldX13; 24.06/6.67 x7 := 3 + oldX14; 24.06/6.67 x8 := 3 + oldX15; 24.06/6.67 x9 := 3; 24.06/6.67 x10 := 4; 24.06/6.67 x11 := oldX17; 24.06/6.67 x12 := oldX18; 24.06/6.67 TO: 2; 24.06/6.67 24.06/6.67 FROM: 1; 24.06/6.67 oldX0 := x0; 24.06/6.67 oldX1 := x1; 24.06/6.67 oldX2 := x2; 24.06/6.67 oldX3 := x3; 24.06/6.67 oldX4 := x4; 24.06/6.67 oldX5 := x5; 24.06/6.67 oldX6 := x6; 24.06/6.67 oldX7 := x7; 24.06/6.67 oldX8 := x8; 24.06/6.67 oldX9 := x9; 24.06/6.67 oldX10 := x10; 24.06/6.67 oldX11 := x11; 24.06/6.67 oldX12 := x12; 24.06/6.67 oldX13 := nondet(); 24.06/6.67 oldX14 := nondet(); 24.06/6.67 oldX15 := nondet(); 24.06/6.67 oldX16 := nondet(); 24.06/6.67 oldX17 := nondet(); 24.06/6.67 oldX18 := nondet(); 24.06/6.67 assume(oldX13 > 0 && oldX14 > 0 && oldX17 < 1 && oldX15 > 0); 24.06/6.67 x0 := oldX13; 24.06/6.67 x1 := oldX14; 24.06/6.67 x2 := oldX15; 24.06/6.67 x3 := oldX16; 24.06/6.67 x4 := oldX17; 24.06/6.67 x5 := 0; 24.06/6.67 x6 := 3 + oldX13; 24.06/6.67 x7 := 3 + oldX14; 24.06/6.67 x8 := 3 + oldX15; 24.06/6.67 x9 := 3; 24.06/6.67 x10 := 1; 24.06/6.67 x11 := 4; 24.06/6.67 x12 := oldX18; 24.06/6.67 TO: 3; 24.06/6.67 24.06/6.67 FROM: 1; 24.06/6.67 oldX0 := x0; 24.06/6.67 oldX1 := x1; 24.06/6.67 oldX2 := x2; 24.06/6.67 oldX3 := x3; 24.06/6.67 oldX4 := x4; 24.06/6.67 oldX5 := x5; 24.06/6.67 oldX6 := x6; 24.06/6.67 oldX7 := x7; 24.06/6.67 oldX8 := x8; 24.06/6.67 oldX9 := x9; 24.06/6.67 oldX10 := x10; 24.06/6.67 oldX11 := x11; 24.06/6.67 oldX12 := x12; 24.06/6.67 oldX13 := nondet(); 24.06/6.67 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 oldX19 := nondet(); 24.06/6.68 oldX20 := nondet(); 24.06/6.68 oldX21 := nondet(); 24.06/6.68 oldX22 := nondet(); 24.06/6.68 oldX23 := nondet(); 24.06/6.68 assume(oldX14 > oldX13 && oldX14 > 0); 24.06/6.68 x0 := oldX13; 24.06/6.68 x1 := oldX14; 24.06/6.68 x2 := 1 + oldX13; 24.06/6.68 x3 := oldX13; 24.06/6.68 x4 := oldX15; 24.06/6.68 x5 := oldX16; 24.06/6.68 x6 := oldX17; 24.06/6.68 x7 := oldX18; 24.06/6.68 x8 := oldX19; 24.06/6.68 x9 := oldX20; 24.06/6.68 x10 := oldX21; 24.06/6.68 x11 := oldX22; 24.06/6.68 x12 := oldX23; 24.06/6.68 TO: 4; 24.06/6.68 24.06/6.68 FROM: 1; 24.06/6.68 oldX0 := x0; 24.06/6.68 oldX1 := x1; 24.06/6.68 oldX2 := x2; 24.06/6.68 oldX3 := x3; 24.06/6.68 oldX4 := x4; 24.06/6.68 oldX5 := x5; 24.06/6.68 oldX6 := x6; 24.06/6.68 oldX7 := x7; 24.06/6.68 oldX8 := x8; 24.06/6.68 oldX9 := x9; 24.06/6.68 oldX10 := x10; 24.06/6.68 oldX11 := x11; 24.06/6.68 oldX12 := x12; 24.06/6.68 oldX13 := nondet(); 24.06/6.68 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 oldX19 := nondet(); 24.06/6.68 oldX20 := nondet(); 24.06/6.68 oldX21 := nondet(); 24.06/6.68 oldX22 := nondet(); 24.06/6.68 oldX23 := nondet(); 24.06/6.68 oldX24 := nondet(); 24.06/6.68 assume(0 = 1); 24.06/6.68 x0 := oldX13; 24.06/6.68 x1 := oldX14; 24.06/6.68 x2 := oldX15; 24.06/6.68 x3 := oldX13; 24.06/6.68 x4 := oldX16; 24.06/6.68 x5 := oldX17; 24.06/6.68 x6 := oldX18; 24.06/6.68 x7 := oldX19; 24.06/6.68 x8 := oldX20; 24.06/6.68 x9 := oldX21; 24.06/6.68 x10 := oldX22; 24.06/6.68 x11 := oldX23; 24.06/6.68 x12 := oldX24; 24.06/6.68 TO: 4; 24.06/6.68 24.06/6.68 FROM: 1; 24.06/6.68 oldX0 := x0; 24.06/6.68 oldX1 := x1; 24.06/6.68 oldX2 := x2; 24.06/6.68 oldX3 := x3; 24.06/6.68 oldX4 := x4; 24.06/6.68 oldX5 := x5; 24.06/6.68 oldX6 := x6; 24.06/6.68 oldX7 := x7; 24.06/6.68 oldX8 := x8; 24.06/6.68 oldX9 := x9; 24.06/6.68 oldX10 := x10; 24.06/6.68 oldX11 := x11; 24.06/6.68 oldX12 := x12; 24.06/6.68 oldX13 := nondet(); 24.06/6.68 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 oldX19 := nondet(); 24.06/6.68 oldX20 := nondet(); 24.06/6.68 oldX21 := nondet(); 24.06/6.68 oldX22 := nondet(); 24.06/6.68 oldX23 := nondet(); 24.06/6.68 assume(0 = 1); 24.06/6.68 x0 := oldX13; 24.06/6.68 x1 := oldX14; 24.06/6.68 x2 := 1; 24.06/6.68 x3 := 0; 24.06/6.68 x4 := oldX15; 24.06/6.68 x5 := oldX16; 24.06/6.68 x6 := oldX17; 24.06/6.68 x7 := oldX18; 24.06/6.68 x8 := oldX19; 24.06/6.68 x9 := oldX20; 24.06/6.68 x10 := oldX21; 24.06/6.68 x11 := oldX22; 24.06/6.68 x12 := oldX23; 24.06/6.68 TO: 4; 24.06/6.68 24.06/6.68 FROM: 1; 24.06/6.68 oldX0 := x0; 24.06/6.68 oldX1 := x1; 24.06/6.68 oldX2 := x2; 24.06/6.68 oldX3 := x3; 24.06/6.68 oldX4 := x4; 24.06/6.68 oldX5 := x5; 24.06/6.68 oldX6 := x6; 24.06/6.68 oldX7 := x7; 24.06/6.68 oldX8 := x8; 24.06/6.68 oldX9 := x9; 24.06/6.68 oldX10 := x10; 24.06/6.68 oldX11 := x11; 24.06/6.68 oldX12 := x12; 24.06/6.68 oldX13 := nondet(); 24.06/6.68 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 oldX19 := nondet(); 24.06/6.68 oldX20 := nondet(); 24.06/6.68 oldX21 := nondet(); 24.06/6.68 oldX22 := nondet(); 24.06/6.68 oldX23 := nondet(); 24.06/6.68 assume(oldX14 < oldX13 && oldX13 > 1 && oldX14 > 0); 24.06/6.68 x0 := oldX13; 24.06/6.68 x1 := oldX14; 24.06/6.68 x2 := 1; 24.06/6.68 x3 := 0; 24.06/6.68 x4 := oldX15; 24.06/6.68 x5 := oldX16; 24.06/6.68 x6 := oldX17; 24.06/6.68 x7 := oldX18; 24.06/6.68 x8 := oldX19; 24.06/6.68 x9 := oldX20; 24.06/6.68 x10 := oldX21; 24.06/6.68 x11 := oldX22; 24.06/6.68 x12 := oldX23; 24.06/6.68 TO: 4; 24.06/6.68 24.06/6.68 FROM: 4; 24.06/6.68 oldX0 := x0; 24.06/6.68 oldX1 := x1; 24.06/6.68 oldX2 := x2; 24.06/6.68 oldX3 := x3; 24.06/6.68 oldX4 := x4; 24.06/6.68 oldX5 := x5; 24.06/6.68 oldX6 := x6; 24.06/6.68 oldX7 := x7; 24.06/6.68 oldX8 := x8; 24.06/6.68 oldX9 := x9; 24.06/6.68 oldX10 := x10; 24.06/6.68 oldX11 := x11; 24.06/6.68 oldX12 := x12; 24.06/6.68 oldX13 := nondet(); 24.06/6.68 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 oldX19 := nondet(); 24.06/6.68 oldX20 := nondet(); 24.06/6.68 oldX21 := nondet(); 24.06/6.68 assume(oldX2 < oldX1); 24.06/6.68 x0 := oldX0; 24.06/6.68 x1 := oldX1; 24.06/6.68 x2 := 1 + oldX2; 24.06/6.68 x3 := oldX2; 24.06/6.68 x4 := oldX13; 24.06/6.68 x5 := oldX14; 24.06/6.68 x6 := oldX15; 24.06/6.68 x7 := oldX16; 24.06/6.68 x8 := oldX17; 24.06/6.68 x9 := oldX18; 24.06/6.68 x10 := oldX19; 24.06/6.68 x11 := oldX20; 24.06/6.68 x12 := oldX21; 24.06/6.68 TO: 4; 24.06/6.68 24.06/6.68 FROM: 4; 24.06/6.68 oldX0 := x0; 24.06/6.68 oldX1 := x1; 24.06/6.68 oldX2 := x2; 24.06/6.68 oldX3 := x3; 24.06/6.68 oldX4 := x4; 24.06/6.68 oldX5 := x5; 24.06/6.68 oldX6 := x6; 24.06/6.68 oldX7 := x7; 24.06/6.68 oldX8 := x8; 24.06/6.68 oldX9 := x9; 24.06/6.68 oldX10 := x10; 24.06/6.68 oldX11 := x11; 24.06/6.68 oldX12 := x12; 24.06/6.68 oldX13 := nondet(); 24.06/6.68 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 oldX19 := nondet(); 24.06/6.68 oldX20 := nondet(); 24.06/6.68 oldX21 := nondet(); 24.06/6.68 assume(oldX2 > oldX1); 24.06/6.68 x0 := oldX0; 24.06/6.68 x1 := oldX1; 24.06/6.68 x2 := 1 + oldX2; 24.06/6.68 x3 := oldX2; 24.06/6.68 x4 := oldX13; 24.06/6.68 x5 := oldX14; 24.06/6.68 x6 := oldX15; 24.06/6.68 x7 := oldX16; 24.06/6.68 x8 := oldX17; 24.06/6.68 x9 := oldX18; 24.06/6.68 x10 := oldX19; 24.06/6.68 x11 := oldX20; 24.06/6.68 x12 := oldX21; 24.06/6.68 TO: 4; 24.06/6.68 24.06/6.68 FROM: 4; 24.06/6.68 oldX0 := x0; 24.06/6.68 oldX1 := x1; 24.06/6.68 oldX2 := x2; 24.06/6.68 oldX3 := x3; 24.06/6.68 oldX4 := x4; 24.06/6.68 oldX5 := x5; 24.06/6.68 oldX6 := x6; 24.06/6.68 oldX7 := x7; 24.06/6.68 oldX8 := x8; 24.06/6.68 oldX9 := x9; 24.06/6.68 oldX10 := x10; 24.06/6.68 oldX11 := x11; 24.06/6.68 oldX12 := x12; 24.06/6.68 oldX13 := nondet(); 24.06/6.68 oldX14 := nondet(); 24.06/6.68 oldX15 := nondet(); 24.06/6.68 oldX16 := nondet(); 24.06/6.68 oldX17 := nondet(); 24.06/6.68 oldX18 := nondet(); 24.06/6.68 assume(oldX3 > -1 && oldX1 = oldX2); 24.06/6.68 x0 := oldX13; 24.06/6.68 x1 := oldX14; 24.06/6.68 x2 := oldX15; 24.06/6.68 x3 := oldX0; 24.06/6.68 x4 := oldX1; 24.06/6.68 x5 := 1; 24.06/6.68 x6 := 0; 24.06/6.68 x7 := oldX3; 24.06/6.68 x8 := oldX16; 24.06/6.68 x9 := oldX17; 24.06/6.68 x10 := oldX18; 24.06/6.68 x11 := 3; 24.06/6.68 x12 := 4; 24.06/6.68 TO: 5; 24.06/6.68 24.06/6.68 24.06/6.68 ---------------------------------------- 24.06/6.68 24.06/6.68 (9) T2 (EQUIVALENT) 24.06/6.68 Initially, performed program simplifications using lexicographic rank functions: 24.06/6.68 * Removed transitions 14 using the following rank functions: 24.06/6.68 - Rank function 1: 24.06/6.68 RF for loc. 8: 1+2*x1-2*x2 24.06/6.68 RF for loc. 9: 2*x1-2*x2 24.06/6.68 Bound for (chained) transitions 14: 2 24.06/6.68 Used the following cutpoint-specific lexicographic rank functions: 24.06/6.68 * For cutpoint 8, used the following rank functions/bounds (in descending priority order): 24.06/6.68 - RF -x2+x1, bound 1 24.06/6.68 24.06/6.68 ---------------------------------------- 24.06/6.68 24.06/6.68 (10) 24.06/6.68 YES 24.13/8.61 EOF