YES proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 170 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 1981 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 105 ms] (9) IntTRS (10) IntTRSCompressionProof [EQUIVALENT, 0 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 24 ms] (13) IntTRS (14) TerminationGraphProcessor [EQUIVALENT, 7 ms] (15) IntTRS (16) IntTRSCompressionProof [EQUIVALENT, 0 ms] (17) IntTRS (18) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (19) IntTRS (20) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (21) YES (22) LLVM Symbolic Execution SCC (23) SCC2IRS [SOUND, 80 ms] (24) IntTRS (25) IntTRSCompressionProof [EQUIVALENT, 1 ms] (26) IntTRS (27) PolynomialOrderProcessor [EQUIVALENT, 12 ms] (28) YES (29) LLVM Symbolic Execution SCC (30) SCC2IRS [SOUND, 48 ms] (31) IntTRS (32) IntTRSCompressionProof [EQUIVALENT, 2 ms] (33) IntTRS (34) RankingReductionPairProof [EQUIVALENT, 0 ms] (35) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %x = alloca i32, align 4 %y = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %x %3 = call i32 @__VERIFIER_nondet_int() store %3, %y br %4 4: %5 = load %x %6 = icmp sgt %5 0 br %6, %7, %10 7: %8 = load %y %9 = icmp sgt %8 0 br %10 10: %11 = phi [0, %4], [%9, %7] br %11, %12, %23 12: %13 = call i32 @__VERIFIER_nondet_int() %14 = icmp ne %13 0 br %14, %15, %18 15: %16 = load %x %17 = sub %16 1 store %17, %x br %22 18: %19 = call i32 @__VERIFIER_nondet_int() store %19, %x %20 = load %y %21 = sub %20 1 store %21, %y br %22 22: br %4 23: %24 = load %1 ret %24 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 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 49 rulesP rules: f_493(v2255, v2256, v2257, v2258, v2259, v2260, 1, v2262, v2263, v2264, v2265, v2266, v2267, v2268, v2269, 0, 3, 2, 4) -> f_496(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 = 0 f_496(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_499(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 < v2266 && 2 <= v2260 && 2 <= v2264 f_499(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_503(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 = 0 f_503(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_507(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: TRUE f_507(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_512(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 = 0 f_512(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_516(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 = 0 f_516(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_520(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 = 0 f_520(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_523(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: TRUE f_523(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2263, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_526(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: TRUE f_526(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_529(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: v2685 != 0 f_526(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_530(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2267, v2268, v2269, 3, 2, 4) :|: v2685 = 0 f_529(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_533(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: 0 = 0 f_533(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_537(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) :|: TRUE f_537(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2267, v2268, v2269, 0, 3, 2, 4) -> f_586(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, v2685, v2264, v2265, v2260, v2266, v2267, v2268, v2269, 0, 3, 2, 4) :|: TRUE f_586(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3343, v3344, v3345, v3346, v3347, 0, 3, 2, 4) -> f_589(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3344, v3345, v3346, v3347, 0, 3, 2, 4) :|: 0 = 0 f_589(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3344, v3345, v3346, v3347, 0, 3, 2, 4) -> f_591(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) :|: 1 + v3387 = v3337 && 0 <= v3387 f_591(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) -> f_593(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) :|: TRUE f_593(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) -> f_595(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) :|: TRUE f_595(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) -> f_491(v3332, v3333, v3334, v3335, v3336, v3337, 1, v3339, v3340, v3341, v3342, v3387, v3345, v3346, v3347, 0, 3, 2, 4) :|: TRUE f_491(v2255, v2256, v2257, v2258, v2259, v2260, 1, v2262, v2263, v2264, v2265, v2266, v2267, v2268, v2269, 0, 3, 2, 4) -> f_493(v2255, v2256, v2257, v2258, v2259, v2260, 1, v2262, v2263, v2264, v2265, v2266, v2267, v2268, v2269, 0, 3, 2, 4) :|: TRUE f_530(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2267, v2268, v2269, 3, 2, 4) -> f_534(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2267, v2268, v2269, 3, 2, 4) :|: 0 = 0 f_534(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2267, v2268, v2269, 3, 2, 4) -> f_538(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2267, v2268, v2269, 3, 2, 4) :|: TRUE f_538(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2267, v2268, v2269, 3, 2, 4) -> f_588(v2255, v2256, v2257, v2258, v2259, v2266, 1, v2262, 0, v2264, v2265, v2260, v2266, v2267, v2268, v2269, 3, 2, 4) :|: TRUE f_588(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3379, v3380, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_590(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3380, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) :|: TRUE f_590(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3380, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_592(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3380, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) :|: TRUE f_592(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3380, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_594(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) :|: 0 = 0 f_594(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_596(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3429, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) :|: 1 + v3429 = v3377 && 0 <= v3429 f_596(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3429, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_597(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3429, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) :|: TRUE f_597(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3429, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_598(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3429, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) :|: TRUE f_598(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3386, v3429, v3381, v3382, v3383, v3384, v3385, 3, 2, 4) -> f_559(v3370, v3371, v3372, v3373, v3374, v3375, 1, v3377, 0, v3381, v3382, v3386, v3429, v3383, v3384, v3385, 3, 2, 4) :|: TRUE f_559(v2918, v2919, v2920, v2921, v2922, v2923, 1, v2925, 0, v2927, v2928, v2929, v2930, v2931, v2932, v2933, 3, 2, 4) -> f_560(v2918, v2919, v2920, v2921, v2922, v2923, 1, v2925, 0, v2927, v2928, v2929, v2930, v2931, v2932, v2933, 3, 2, 4) :|: TRUE f_560(v2918, v2919, v2920, v2921, v2922, v2923, 1, v2925, 0, v2927, v2928, v2929, v2930, v2931, v2932, v2933, 3, 2, 4) -> f_561(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) :|: 0 = 0 f_561(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) -> f_562(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) :|: 0 < v2929 f_562(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) -> f_564(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) :|: 0 = 0 f_564(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) -> f_566(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) :|: TRUE f_566(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2925, 0, v2927, v2928, v2930, v2931, v2932, v2933, 3, 2, 4) -> f_568(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: 0 = 0 f_568(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_570(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: 0 < v2930 && 2 <= v2925 && 2 <= v2922 f_570(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_573(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: 0 = 0 f_573(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_575(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: 0 = 0 f_575(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_577(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: TRUE f_577(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_579(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: TRUE f_579(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_581(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: v3310 != 0 f_579(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_582(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: v3310 = 0 f_581(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_583(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, v2927, v2928, v2925, v2931, v2932, v2933, 0, 3, 2, 4) :|: 0 = 0 f_583(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, v2927, v2928, v2925, v2931, v2932, v2933, 0, 3, 2, 4) -> f_585(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, v2927, v2928, v2925, v2931, v2932, v2933, 0, 3, 2, 4) :|: TRUE f_585(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, v2927, v2928, v2925, v2931, v2932, v2933, 0, 3, 2, 4) -> f_586(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, v3310, v2929, v2925, v2927, v2928, v2931, v2932, v2933, 0, 3, 2, 4) :|: TRUE f_582(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_584(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: 0 = 0 f_584(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_587(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) :|: TRUE f_587(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2927, v2928, v2925, v2931, v2932, v2933, 3, 2, 4) -> f_588(v2918, v2919, v2920, v2921, v2922, v2929, 1, v2930, 0, v2929, v2925, v2927, v2928, v2931, v2932, v2933, 3, 2, 4) :|: TRUE Combined rules. Obtained 6 rulesP rules: f_493(v2255:0, v2256:0, v2257:0, v2258:0, v2259:0, v2260:0, 1, v2262:0, v2263:0, v2264:0, v2265:0, 1 + v3387:0, v2267:0, v2268:0, v2269:0, 0, 3, 2, 4) -> f_493(v2255:0, v2256:0, v2257:0, v2258:0, v2259:0, 1 + v3387:0, 1, v2262:0, v2685:0, v2264:0, v2265:0, v3387:0, v2267:0, v2268:0, v2269:0, 0, 3, 2, 4) :|: v2260:0 > 1 && v3387:0 > -1 && v2264:0 > 1 && v2685:0 < 0 f_493(v2255:0, v2256:0, v2257:0, v2258:0, v2259:0, v2260:0, 1, v2262:0, v2263:0, v2264:0, v2265:0, 1 + v3387:0, v2267:0, v2268:0, v2269:0, 0, 3, 2, 4) -> f_493(v2255:0, v2256:0, v2257:0, v2258:0, v2259:0, 1 + v3387:0, 1, v2262:0, v2685:0, v2264:0, v2265:0, v3387:0, v2267:0, v2268:0, v2269:0, 0, 3, 2, 4) :|: v2260:0 > 1 && v3387:0 > -1 && v2264:0 > 1 && v2685:0 > 0 f_579(v2918:0, v2919:0, v2920:0, v2921:0, v2922:0, 1 + v3387:0, 1, v2930:0, v3310:0, 0, v2927:0, v2928:0, v2925:0, v2931:0, v2932:0, v2933:0, 3, 2, 4) -> f_493(v2918:0, v2919:0, v2920:0, v2921:0, v2922:0, 1 + v3387:0, 1, v2930:0, v3310:0, 1 + v3387:0, v2925:0, v3387:0, v2931:0, v2932:0, v2933:0, 0, 3, 2, 4) :|: v3310:0 < 0 && v3387:0 > -1 f_579(v2918:0, v2919:0, v2920:0, v2921:0, v2922:0, 1 + v3387:0, 1, v2930:0, v3310:0, 0, v2927:0, v2928:0, v2925:0, v2931:0, v2932:0, v2933:0, 3, 2, 4) -> f_493(v2918:0, v2919:0, v2920:0, v2921:0, v2922:0, 1 + v3387:0, 1, v2930:0, v3310:0, 1 + v3387:0, v2925:0, v3387:0, v2931:0, v2932:0, v2933:0, 0, 3, 2, 4) :|: v3310:0 > 0 && v3387:0 > -1 f_579(v2918:0, v2919:0, v2920:0, v2921:0, v2922:0, v2929:0, 1, 1 + v3429:0, 0, 0, v2927:0, v2928:0, v2925:0, v2931:0, v2932:0, v2933:0, 3, 2, 4) -> f_579(v2918:0, v2919:0, v2920:0, v2921:0, v2922:0, v3386:0, 1, v3429:0, v3310:1, 0, v2927:0, v2928:0, 1 + v3429:0, v2931:0, v2932:0, v2933:0, 3, 2, 4) :|: v3429:0 > 0 && v3386:0 > 0 && v2922:0 > 1 f_493(v2255:0, v2256:0, v2257:0, v2258:0, v2259:0, v2260:0, 1, 1 + v3429:0, v2263:0, v2264:0, v2265:0, v2266:0, v2267:0, v2268:0, v2269:0, 0, 3, 2, 4) -> f_579(v2255:0, v2256:0, v2257:0, v2258:0, v2259:0, v3386:0, 1, v3429:0, v3310:0, 0, v2260:0, v2266:0, 1 + v3429:0, v2267:0, v2268:0, v2269:0, 3, 2, 4) :|: v3429:0 > 0 && v2260:0 > 1 && v2266:0 > 0 && v2264:0 > 1 && v3386:0 > 0 && v2259:0 > 1 Filtered unneeded arguments: f_493(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_493(x5, x6, x8, x10, x12) f_579(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) -> f_579(x5, x6, x8, x9) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: f_493(v2259:0, v2260:0, v2262:0, v2264:0, sum~cons_1~v3387:0) -> f_493(v2259:0, 1 + v3387:0, v2262:0, v2264:0, v3387:0) :|: v3387:0 > -1 && v2264:0 > 1 && v2260:0 > 1 && sum~cons_1~v3387:0 = 1 + v3387:0 f_579(v2922:0, sum~cons_1~v3387:0, v2930:0, v3310:0) -> f_493(v2922:0, 1 + v3387:0, v2930:0, 1 + v3387:0, v3387:0) :|: v3310:0 < 0 && v3387:0 > -1 && sum~cons_1~v3387:0 = 1 + v3387:0 f_579(v2922:0, sum~cons_1~v3387:0, v2930:0, v3310:0) -> f_493(v2922:0, 1 + v3387:0, v2930:0, 1 + v3387:0, v3387:0) :|: v3310:0 > 0 && v3387:0 > -1 && sum~cons_1~v3387:0 = 1 + v3387:0 f_579(v2922:0, v2929:0, sum~cons_1~v3429:0, cons_0) -> f_579(v2922:0, v3386:0, v3429:0, v3310:1) :|: v3386:0 > 0 && v2922:0 > 1 && v3429:0 > 0 && sum~cons_1~v3429:0 = 1 + v3429:0 && cons_0 = 0 f_493(v2259:0, v2260:0, sum~cons_1~v3429:0, v2264:0, v2266:0) -> f_579(v2259:0, v3386:0, v3429:0, v3310:0) :|: v2260:0 > 1 && v3429:0 > 0 && v2266:0 > 0 && v2264:0 > 1 && v2259:0 > 1 && v3386:0 > 0 && sum~cons_1~v3429:0 = 1 + v3429:0 ---------------------------------------- (9) Obligation: Rules: f_493(v2259:0, v2260:0, v2262:0, v2264:0, sum~cons_1~v3387:0) -> f_493(v2259:0, 1 + v3387:0, v2262:0, v2264:0, v3387:0) :|: v3387:0 > -1 && v2264:0 > 1 && v2260:0 > 1 && sum~cons_1~v3387:0 = 1 + v3387:0 f_579(x, x1, x2, x3) -> f_493(x, 1 + x4, x2, 1 + x4, x4) :|: x3 < 0 && x4 > -1 && x1 = 1 + x4 f_579(x5, x6, x7, x8) -> f_493(x5, 1 + x9, x7, 1 + x9, x9) :|: x8 > 0 && x9 > -1 && x6 = 1 + x9 f_579(v2922:0, v2929:0, sum~cons_1~v3429:0, cons_0) -> f_579(v2922:0, v3386:0, v3429:0, v3310:1) :|: v3386:0 > 0 && v2922:0 > 1 && v3429:0 > 0 && sum~cons_1~v3429:0 = 1 + v3429:0 && cons_0 = 0 f_493(x10, x11, x12, x13, x14) -> f_579(x10, x15, x16, x17) :|: x11 > 1 && x16 > 0 && x14 > 0 && x13 > 1 && x10 > 1 && x15 > 0 && x12 = 1 + x16 ---------------------------------------- (10) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (11) Obligation: Rules: f_493(v2259:0:0, v2260:0:0, v2262:0:0, v2264:0:0, sum~cons_1~v3387:0:0) -> f_493(v2259:0:0, 1 + v3387:0:0, v2262:0:0, v2264:0:0, v3387:0:0) :|: v3387:0:0 > -1 && v2264:0:0 > 1 && v2260:0:0 > 1 && sum~cons_1~v3387:0:0 = 1 + v3387:0:0 f_579(x5:0, sum~cons_1~x9:0, x7:0, x8:0) -> f_493(x5:0, 1 + x9:0, x7:0, 1 + x9:0, x9:0) :|: x8:0 > 0 && x9:0 > -1 && sum~cons_1~x9:0 = 1 + x9:0 f_493(x10:0, x11:0, sum~cons_1~x16:0, x13:0, x14:0) -> f_579(x10:0, x15:0, x16:0, x17:0) :|: x10:0 > 1 && x15:0 > 0 && x13:0 > 1 && x14:0 > 0 && x16:0 > 0 && x11:0 > 1 && sum~cons_1~x16:0 = 1 + x16:0 f_579(v2922:0:0, v2929:0:0, sum~cons_1~v3429:0:0, cons_0) -> f_579(v2922:0:0, v3386:0:0, v3429:0:0, v3310:1:0) :|: v3386:0:0 > 0 && v2922:0:0 > 1 && v3429:0:0 > 0 && sum~cons_1~v3429:0:0 = 1 + v3429:0:0 && cons_0 = 0 f_579(x:0, sum~cons_1~x4:0, x2:0, x3:0) -> f_493(x:0, 1 + x4:0, x2:0, 1 + x4:0, x4:0) :|: x3:0 < 0 && x4:0 > -1 && sum~cons_1~x4:0 = 1 + x4:0 ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_493 ] = 2*f_493_1 + 2*f_493_3 [ f_579 ] = 2*f_579_1 + 2*f_579_3 + 1 The following rules are decreasing: f_579(x5:0, sum~cons_1~x9:0, x7:0, x8:0) -> f_493(x5:0, 1 + x9:0, x7:0, 1 + x9:0, x9:0) :|: x8:0 > 0 && x9:0 > -1 && sum~cons_1~x9:0 = 1 + x9:0 f_493(x10:0, x11:0, sum~cons_1~x16:0, x13:0, x14:0) -> f_579(x10:0, x15:0, x16:0, x17:0) :|: x10:0 > 1 && x15:0 > 0 && x13:0 > 1 && x14:0 > 0 && x16:0 > 0 && x11:0 > 1 && sum~cons_1~x16:0 = 1 + x16:0 f_579(v2922:0:0, v2929:0:0, sum~cons_1~v3429:0:0, cons_0) -> f_579(v2922:0:0, v3386:0:0, v3429:0:0, v3310:1:0) :|: v3386:0:0 > 0 && v2922:0:0 > 1 && v3429:0:0 > 0 && sum~cons_1~v3429:0:0 = 1 + v3429:0:0 && cons_0 = 0 f_579(x:0, sum~cons_1~x4:0, x2:0, x3:0) -> f_493(x:0, 1 + x4:0, x2:0, 1 + x4:0, x4:0) :|: x3:0 < 0 && x4:0 > -1 && sum~cons_1~x4:0 = 1 + x4:0 The following rules are bounded: f_493(x10:0, x11:0, sum~cons_1~x16:0, x13:0, x14:0) -> f_579(x10:0, x15:0, x16:0, x17:0) :|: x10:0 > 1 && x15:0 > 0 && x13:0 > 1 && x14:0 > 0 && x16:0 > 0 && x11:0 > 1 && sum~cons_1~x16:0 = 1 + x16:0 f_579(v2922:0:0, v2929:0:0, sum~cons_1~v3429:0:0, cons_0) -> f_579(v2922:0:0, v3386:0:0, v3429:0:0, v3310:1:0) :|: v3386:0:0 > 0 && v2922:0:0 > 1 && v3429:0:0 > 0 && sum~cons_1~v3429:0:0 = 1 + v3429:0:0 && cons_0 = 0 ---------------------------------------- (13) Obligation: Rules: f_493(v2259:0:0, v2260:0:0, v2262:0:0, v2264:0:0, sum~cons_1~v3387:0:0) -> f_493(v2259:0:0, 1 + v3387:0:0, v2262:0:0, v2264:0:0, v3387:0:0) :|: v3387:0:0 > -1 && v2264:0:0 > 1 && v2260:0:0 > 1 && sum~cons_1~v3387:0:0 = 1 + v3387:0:0 f_579(x5:0, sum~cons_1~x9:0, x7:0, x8:0) -> f_493(x5:0, 1 + x9:0, x7:0, 1 + x9:0, x9:0) :|: x8:0 > 0 && x9:0 > -1 && sum~cons_1~x9:0 = 1 + x9:0 f_579(x:0, sum~cons_1~x4:0, x2:0, x3:0) -> f_493(x:0, 1 + x4:0, x2:0, 1 + x4:0, x4:0) :|: x3:0 < 0 && x4:0 > -1 && sum~cons_1~x4:0 = 1 + x4:0 ---------------------------------------- (14) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (15) Obligation: Rules: f_493(v2259:0:0, v2260:0:0, v2262:0:0, v2264:0:0, sum~cons_1~v3387:0:0) -> f_493(v2259:0:0, 1 + v3387:0:0, v2262:0:0, v2264:0:0, v3387:0:0) :|: v3387:0:0 > -1 && v2264:0:0 > 1 && v2260:0:0 > 1 && sum~cons_1~v3387:0:0 = 1 + v3387:0:0 ---------------------------------------- (16) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (17) Obligation: Rules: f_493(v2259:0:0:0, v2260:0:0:0, v2262:0:0:0, v2264:0:0:0, sum~cons_1~v3387:0:0:0) -> f_493(v2259:0:0:0, 1 + v3387:0:0:0, v2262:0:0:0, v2264:0:0:0, v3387:0:0:0) :|: v3387:0:0:0 > -1 && v2264:0:0:0 > 1 && v2260:0:0:0 > 1 && sum~cons_1~v3387:0:0:0 = 1 + v3387:0:0:0 ---------------------------------------- (18) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f_493(x1, x2, x3, x4, x5) -> f_493(x2, x4, x5) ---------------------------------------- (19) Obligation: Rules: f_493(v2260:0:0:0, v2264:0:0:0, sum~cons_1~v3387:0:0:0) -> f_493(1 + v3387:0:0:0, v2264:0:0:0, v3387:0:0:0) :|: v3387:0:0:0 > -1 && v2264:0:0:0 > 1 && v2260:0:0:0 > 1 && sum~cons_1~v3387:0:0:0 = 1 + v3387:0:0:0 ---------------------------------------- (20) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f_493(x, x1, x2)] = x2 The following rules are decreasing: f_493(v2260:0:0:0, v2264:0:0:0, sum~cons_1~v3387:0:0:0) -> f_493(1 + v3387:0:0:0, v2264:0:0:0, v3387:0:0:0) :|: v3387:0:0:0 > -1 && v2264:0:0:0 > 1 && v2260:0:0:0 > 1 && sum~cons_1~v3387:0:0:0 = 1 + v3387:0:0:0 The following rules are bounded: f_493(v2260:0:0:0, v2264:0:0:0, sum~cons_1~v3387:0:0:0) -> f_493(1 + v3387:0:0:0, v2264:0:0:0, v3387:0:0:0) :|: v3387:0:0:0 > -1 && v2264:0:0:0 > 1 && v2260:0:0:0 > 1 && sum~cons_1~v3387:0:0:0 = 1 + v3387:0:0:0 ---------------------------------------- (21) YES ---------------------------------------- (22) Obligation: SCC ---------------------------------------- (23) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 21 rulesP rules: f_302(v588, v589, v590, v591, v592, v593, 1, v595, 0, v597, v598, v599, v600, v601, 3, 4) -> f_304(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) :|: 0 = 0 f_304(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) -> f_307(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) :|: 0 < v597 f_307(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) -> f_311(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) :|: 0 = 0 f_311(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) -> f_315(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) :|: TRUE f_315(v588, v589, v590, v591, v592, v597, 1, v595, 0, v598, v599, v600, v601, 3, 4) -> f_319(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 4) :|: 0 = 0 f_319(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 4) -> f_323(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: 0 < v598 && 2 <= v595 && 2 <= v592 f_323(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_328(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: 0 = 0 f_328(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_332(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: 0 = 0 f_332(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_336(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: TRUE f_336(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_339(v588, v589, v590, v591, v592, v597, 1, v598, v770, 0, v595, v599, v600, v601, 3, 2, 4) :|: TRUE f_339(v588, v589, v590, v591, v592, v597, 1, v598, v770, 0, v595, v599, v600, v601, 3, 2, 4) -> f_343(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: v770 = 0 f_343(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_346(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: 0 = 0 f_346(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_350(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) :|: TRUE f_350(v588, v589, v590, v591, v592, v597, 1, v598, 0, v595, v599, v600, v601, 3, 2, 4) -> f_354(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v595, v599, v600, v601, 3, 2, 4) :|: TRUE f_354(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v595, v599, v600, v601, 3, 2, 4) -> f_358(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v595, v599, v600, v601, 3, 2, 4) :|: TRUE f_358(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v595, v599, v600, v601, 3, 2, 4) -> f_362(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v599, v600, v601, 3, 2, 4) :|: 0 = 0 f_362(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v599, v600, v601, 3, 2, 4) -> f_367(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 2, 4) :|: 1 + v919 = v598 && 0 <= v919 f_367(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 2, 4) -> f_371(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 2, 4) :|: TRUE f_371(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 2, 4) -> f_375(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 2, 4) :|: TRUE f_375(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 2, 4) -> f_300(v588, v589, v590, v591, v592, v597, 1, v598, 0, v796, v919, v599, v600, v601, 3, 4) :|: TRUE f_300(v588, v589, v590, v591, v592, v593, 1, v595, 0, v597, v598, v599, v600, v601, 3, 4) -> f_302(v588, v589, v590, v591, v592, v593, 1, v595, 0, v597, v598, v599, v600, v601, 3, 4) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_302(v588:0, v589:0, v590:0, v591:0, v592:0, v593:0, 1, v595:0, 0, v597:0, 1 + v919:0, v599:0, v600:0, v601:0, 3, 4) -> f_302(v588:0, v589:0, v590:0, v591:0, v592:0, v597:0, 1, 1 + v919:0, 0, v796:0, v919:0, v599:0, v600:0, v601:0, 3, 4) :|: v597:0 > 0 && v595:0 > 1 && v919:0 > -1 && v592:0 > 1 Filtered unneeded arguments: f_302(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) -> f_302(x5, x8, x10, x11) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_302(v592:0, v595:0, v597:0, sum~cons_1~v919:0) -> f_302(v592:0, 1 + v919:0, v796:0, v919:0) :|: v595:0 > 1 && v597:0 > 0 && v592:0 > 1 && v919:0 > -1 && sum~cons_1~v919:0 = 1 + v919:0 ---------------------------------------- (24) Obligation: Rules: f_302(v592:0, v595:0, v597:0, sum~cons_1~v919:0) -> f_302(v592:0, 1 + v919:0, v796:0, v919:0) :|: v595:0 > 1 && v597:0 > 0 && v592:0 > 1 && v919:0 > -1 && sum~cons_1~v919:0 = 1 + v919:0 ---------------------------------------- (25) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (26) Obligation: Rules: f_302(v592:0:0, v595:0:0, v597:0:0, sum~cons_1~v919:0:0) -> f_302(v592:0:0, 1 + v919:0:0, v796:0:0, v919:0:0) :|: v592:0:0 > 1 && v919:0:0 > -1 && v597:0:0 > 0 && v595:0:0 > 1 && sum~cons_1~v919:0:0 = 1 + v919:0:0 ---------------------------------------- (27) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f_302(x, x1, x2, x3)] = x3 The following rules are decreasing: f_302(v592:0:0, v595:0:0, v597:0:0, sum~cons_1~v919:0:0) -> f_302(v592:0:0, 1 + v919:0:0, v796:0:0, v919:0:0) :|: v592:0:0 > 1 && v919:0:0 > -1 && v597:0:0 > 0 && v595:0:0 > 1 && sum~cons_1~v919:0:0 = 1 + v919:0:0 The following rules are bounded: f_302(v592:0:0, v595:0:0, v597:0:0, sum~cons_1~v919:0:0) -> f_302(v592:0:0, 1 + v919:0:0, v796:0:0, v919:0:0) :|: v592:0:0 > 1 && v919:0:0 > -1 && v597:0:0 > 0 && v595:0:0 > 1 && sum~cons_1~v919:0:0 = 1 + v919:0:0 ---------------------------------------- (28) YES ---------------------------------------- (29) Obligation: SCC ---------------------------------------- (30) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: f_274(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 4) -> f_277(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: 0 < v461 && 2 <= v458 && 2 <= v456 f_277(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_281(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: 0 = 0 f_281(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_285(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_285(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_289(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: 0 = 0 f_289(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_293(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: 0 = 0 f_293(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_297(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: 0 = 0 f_297(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_301(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_301(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 2, 4) -> f_303(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_303(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) -> f_305(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) :|: v619 != 0 f_305(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) -> f_309(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) :|: 0 = 0 f_309(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) -> f_313(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_313(v453, v454, v455, v456, v457, v461, 1, v619, v458, v462, v463, v464, 0, 3, 2, 4) -> f_317(v453, v454, v455, v456, v457, v461, 1, v619, v462, v463, v464, 0, 3, 2, 4) :|: 0 = 0 f_317(v453, v454, v455, v456, v457, v461, 1, v619, v462, v463, v464, 0, 3, 2, 4) -> f_321(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) :|: 1 + v650 = v461 && 0 <= v650 f_321(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) -> f_326(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_326(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) -> f_330(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_330(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) -> f_334(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) :|: TRUE f_334(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 2, 4) -> f_271(v453, v454, v455, v456, v457, v461, 1, v619, v650, v462, v463, v464, 0, 3, 4) :|: TRUE f_271(v453, v454, v455, v456, v457, v458, 1, v460, v461, v462, v463, v464, 0, 3, 4) -> f_274(v453, v454, v455, v456, v457, v461, 1, v460, v458, v462, v463, v464, 0, 3, 4) :|: 0 = 0 Combined rules. Obtained 2 rulesP rules: f_274(v453:0, v454:0, v455:0, v456:0, v457:0, 1 + v650:0, 1, v460:0, v458:0, v462:0, v463:0, v464:0, 0, 3, 4) -> f_274(v453:0, v454:0, v455:0, v456:0, v457:0, v650:0, 1, v619:0, 1 + v650:0, v462:0, v463:0, v464:0, 0, 3, 4) :|: v458:0 > 1 && v650:0 > -1 && v456:0 > 1 && v619:0 < 0 f_274(v453:0, v454:0, v455:0, v456:0, v457:0, 1 + v650:0, 1, v460:0, v458:0, v462:0, v463:0, v464:0, 0, 3, 4) -> f_274(v453:0, v454:0, v455:0, v456:0, v457:0, v650:0, 1, v619:0, 1 + v650:0, v462:0, v463:0, v464:0, 0, 3, 4) :|: v458:0 > 1 && v650:0 > -1 && v456:0 > 1 && v619:0 > 0 Filtered unneeded arguments: f_274(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_274(x4, x6, x9) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_274(v456:0, sum~cons_1~v650:0, v458:0) -> f_274(v456:0, v650:0, 1 + v650:0) :|: v650:0 > -1 && v456:0 > 1 && v458:0 > 1 && sum~cons_1~v650:0 = 1 + v650:0 ---------------------------------------- (31) Obligation: Rules: f_274(v456:0, sum~cons_1~v650:0, v458:0) -> f_274(v456:0, v650:0, 1 + v650:0) :|: v650:0 > -1 && v456:0 > 1 && v458:0 > 1 && sum~cons_1~v650:0 = 1 + v650:0 ---------------------------------------- (32) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (33) Obligation: Rules: f_274(v456:0:0, sum~cons_1~v650:0:0, v458:0:0) -> f_274(v456:0:0, v650:0:0, 1 + v650:0:0) :|: v650:0:0 > -1 && v456:0:0 > 1 && v458:0:0 > 1 && sum~cons_1~v650:0:0 = 1 + v650:0:0 ---------------------------------------- (34) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_274 ] = f_274_2 The following rules are decreasing: f_274(v456:0:0, sum~cons_1~v650:0:0, v458:0:0) -> f_274(v456:0:0, v650:0:0, 1 + v650:0:0) :|: v650:0:0 > -1 && v456:0:0 > 1 && v458:0:0 > 1 && sum~cons_1~v650:0:0 = 1 + v650:0:0 The following rules are bounded: f_274(v456:0:0, sum~cons_1~v650:0:0, v458:0:0) -> f_274(v456:0:0, v650:0:0, 1 + v650:0:0) :|: v650:0:0 > -1 && v456:0:0 > 1 && v458:0:0 > 1 && sum~cons_1~v650:0:0 = 1 + v650:0:0 ---------------------------------------- (35) YES