YES proof of prog.inttrs # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given IRSwT could be proven: (0) IRSwT (1) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (2) IRSwT (3) IRSwTTerminationDigraphProof [EQUIVALENT, 2260 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IRSwT (8) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (9) IRSwT (10) TempFilterProof [SOUND, 84 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 0 ms] (13) IntTRS (14) RankingReductionPairProof [EQUIVALENT, 9 ms] (15) YES (16) IRSwT (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IRSwT (19) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (20) IRSwT (21) TempFilterProof [SOUND, 36 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 5 ms] (24) YES (25) IRSwT (26) IntTRSCompressionProof [EQUIVALENT, 0 ms] (27) IRSwT (28) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (29) IRSwT (30) TempFilterProof [SOUND, 13 ms] (31) IntTRS (32) PolynomialOrderProcessor [EQUIVALENT, 5 ms] (33) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4) -> f626_0_main_GE(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f626_0_main_GE(x, x1, x2, x3) -> f675_0_main_InvokeMethod(x4, x5, x6, x7) :|: x1 <= x2 - 1 && 0 <= x2 - 1 && -1 <= x9 - 1 && x4 <= x && 0 <= x - 1 && 0 <= x4 - 1 && x1 = x5 && x2 = x7 f626_0_main_GE(x10, x11, x12, x13) -> f60_0_power_GT(x14, x15, x16, x17) :|: x12 = x14 && 0 <= x10 - 1 && -1 <= x15 - 1 && 0 <= x12 - 1 && x11 <= x12 - 1 f626_0_main_GE(x18, x19, x20, x22) -> f675_0_main_InvokeMethod(x23, x24, x25, x26) :|: x20 = x26 && 1 = x25 && x19 = x24 && 0 <= x23 - 1 && 0 <= x18 - 1 && x23 <= x18 && 0 <= x20 - 1 && x19 <= x20 - 1 f626_0_main_GE(x27, x28, x29, x30) -> f675_0_main_InvokeMethod(x31, x32, x33, x34) :|: x28 <= x29 - 1 && 0 <= x29 - 1 && -1 <= x35 - 1 && x31 <= x27 && 0 <= x27 - 1 && 0 <= x31 - 1 && x28 = x32 && x29 = x33 && x29 = x34 f675_0_main_InvokeMethod(x37, x38, x39, x40) -> f712_0_main_ArrayAccess(x41, x42, x43, x44) :|: x40 = x43 && x38 = x42 && 0 <= x41 - 1 && 0 <= x37 - 1 && x41 <= x37 && 0 <= x39 - 1 && 0 <= x40 - 1 f712_0_main_ArrayAccess(x46, x47, x48, x49) -> f60_0_power_GT(x50, x51, x52, x53) :|: x48 = x50 && 0 <= x46 - 1 && x47 <= x48 - 1 && -1 <= x51 - 1 && 0 <= x48 - 1 f712_0_main_ArrayAccess(x54, x55, x56, x57) -> f753_0_main_InvokeMethod(x58, x59, x60, x61) :|: 0 <= x56 - 1 && -1 <= x62 - 1 && x55 <= x56 - 1 && x58 <= x54 && 0 <= x54 - 1 && 0 <= x58 - 1 && x55 = x59 && x56 = x61 f712_0_main_ArrayAccess(x63, x64, x65, x66) -> f753_0_main_InvokeMethod(x67, x68, x70, x71) :|: x65 = x71 && 1 = x70 && x64 = x68 && 0 <= x67 - 1 && 0 <= x63 - 1 && x67 <= x63 && 0 <= x65 - 1 && x64 <= x65 - 1 f712_0_main_ArrayAccess(x72, x73, x74, x75) -> f753_0_main_InvokeMethod(x76, x77, x78, x79) :|: 0 <= x74 - 1 && -1 <= x80 - 1 && x73 <= x74 - 1 && x76 <= x72 && 0 <= x72 - 1 && 0 <= x76 - 1 && x73 = x77 && x74 = x78 && x74 = x79 f753_0_main_InvokeMethod(x81, x82, x83, x84) -> f626_0_main_GE(x85, x86, x87, x88) :|: x84 = x87 && x82 + 1 = x86 && 1 = x83 && 0 <= x85 - 1 && 0 <= x81 - 1 && 0 <= x84 - 1 && x85 <= x81 f753_0_main_InvokeMethod(x89, x90, x91, x92) -> f626_0_main_GE(x93, x94, x95, x96) :|: x92 = x95 && x90 + 1 = x94 && 0 <= x93 - 1 && 0 <= x89 - 1 && x93 <= x89 && 0 <= x92 - 1 && 0 <= x91 - 1 f60_0_power_GT(x97, x98, x99, x100) -> f60_0_power_GT'(x101, x102, x103, x104) :|: 0 <= x97 - 1 && 1 <= x98 - 1 && 1 <= x97 * x97 && 0 <= x105 - 1 && x105 <= x98 - 1 && x97 = x101 && x98 = x102 f60_0_power_GT'(x106, x107, x108, x109) -> f60_0_power_GT(x110, x111, x112, x113) :|: x106 * x106 = x110 && 0 <= x107 - 2 * x111 && x107 - 2 * x111 <= 1 && 0 <= x111 - 1 && x111 <= x107 - 1 && 1 <= x106 * x106 && 1 <= x107 - 1 && 0 <= x106 - 1 f675_0_main_InvokeMethod(x114, x115, x116, x117) -> f116_0_even_NE(x118, x119, x120, x121) :|: x116 = x118 && 0 <= x114 - 1 && 0 <= x117 - 1 && 0 <= x116 - 1 f753_0_main_InvokeMethod(x122, x123, x124, x125) -> f168_0_odd_NE(x126, x127, x128, x129) :|: x124 = x126 && 0 <= x122 - 1 && 0 <= x125 - 1 && 0 <= x124 - 1 f116_0_even_NE(x130, x131, x132, x133) -> f168_0_odd_NE(x134, x135, x136, x137) :|: x130 - 1 = x134 && x130 - 1 <= x130 - 1 && 1 <= x130 - 1 f168_0_odd_NE(x138, x139, x140, x141) -> f116_0_even_NE(x142, x143, x144, x145) :|: x138 - 1 = x142 && x138 - 1 <= x138 - 1 && 1 <= x138 - 1 __init(x146, x147, x148, x149) -> f1_0_main_ConstantStackPush(x150, x151, x152, x153) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3, arg4) ---------------------------------------- (1) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (2) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4) -> f626_0_main_GE(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f626_0_main_GE(x, x1, x2, x3) -> f675_0_main_InvokeMethod(x4, x5, x6, x7) :|: x1 <= x2 - 1 && 0 <= x2 - 1 && -1 <= x9 - 1 && x4 <= x && 0 <= x - 1 && 0 <= x4 - 1 && x1 = x5 && x2 = x7 f626_0_main_GE(x10, x11, x12, x13) -> f60_0_power_GT(x14, x15, x16, x17) :|: x12 = x14 && 0 <= x10 - 1 && -1 <= x15 - 1 && 0 <= x12 - 1 && x11 <= x12 - 1 f626_0_main_GE(x18, x19, x20, x22) -> f675_0_main_InvokeMethod(x23, x24, x25, x26) :|: x20 = x26 && 1 = x25 && x19 = x24 && 0 <= x23 - 1 && 0 <= x18 - 1 && x23 <= x18 && 0 <= x20 - 1 && x19 <= x20 - 1 f626_0_main_GE(x27, x28, x29, x30) -> f675_0_main_InvokeMethod(x31, x32, x33, x34) :|: x28 <= x29 - 1 && 0 <= x29 - 1 && -1 <= x35 - 1 && x31 <= x27 && 0 <= x27 - 1 && 0 <= x31 - 1 && x28 = x32 && x29 = x33 && x29 = x34 f675_0_main_InvokeMethod(x37, x38, x39, x40) -> f712_0_main_ArrayAccess(x41, x42, x43, x44) :|: x40 = x43 && x38 = x42 && 0 <= x41 - 1 && 0 <= x37 - 1 && x41 <= x37 && 0 <= x39 - 1 && 0 <= x40 - 1 f712_0_main_ArrayAccess(x46, x47, x48, x49) -> f60_0_power_GT(x50, x51, x52, x53) :|: x48 = x50 && 0 <= x46 - 1 && x47 <= x48 - 1 && -1 <= x51 - 1 && 0 <= x48 - 1 f712_0_main_ArrayAccess(x54, x55, x56, x57) -> f753_0_main_InvokeMethod(x58, x59, x60, x61) :|: 0 <= x56 - 1 && -1 <= x62 - 1 && x55 <= x56 - 1 && x58 <= x54 && 0 <= x54 - 1 && 0 <= x58 - 1 && x55 = x59 && x56 = x61 f712_0_main_ArrayAccess(x63, x64, x65, x66) -> f753_0_main_InvokeMethod(x67, x68, x70, x71) :|: x65 = x71 && 1 = x70 && x64 = x68 && 0 <= x67 - 1 && 0 <= x63 - 1 && x67 <= x63 && 0 <= x65 - 1 && x64 <= x65 - 1 f712_0_main_ArrayAccess(x72, x73, x74, x75) -> f753_0_main_InvokeMethod(x76, x77, x78, x79) :|: 0 <= x74 - 1 && -1 <= x80 - 1 && x73 <= x74 - 1 && x76 <= x72 && 0 <= x72 - 1 && 0 <= x76 - 1 && x73 = x77 && x74 = x78 && x74 = x79 f753_0_main_InvokeMethod(x81, x82, x83, x84) -> f626_0_main_GE(x85, x86, x87, x88) :|: x84 = x87 && x82 + 1 = x86 && 1 = x83 && 0 <= x85 - 1 && 0 <= x81 - 1 && 0 <= x84 - 1 && x85 <= x81 f753_0_main_InvokeMethod(x89, x90, x91, x92) -> f626_0_main_GE(x93, x94, x95, x96) :|: x92 = x95 && x90 + 1 = x94 && 0 <= x93 - 1 && 0 <= x89 - 1 && x93 <= x89 && 0 <= x92 - 1 && 0 <= x91 - 1 f60_0_power_GT(x97, x98, x99, x100) -> f60_0_power_GT'(x101, x102, x103, x104) :|: 0 <= x97 - 1 && 1 <= x98 - 1 && 1 <= x97 * x97 && 0 <= x105 - 1 && x105 <= x98 - 1 && x97 = x101 && x98 = x102 f60_0_power_GT'(x106, x107, x108, x109) -> f60_0_power_GT(x110, x111, x112, x113) :|: x106 * x106 = x110 && 0 <= x107 - 2 * x111 && x107 - 2 * x111 <= 1 && 0 <= x111 - 1 && x111 <= x107 - 1 && 1 <= x106 * x106 && 1 <= x107 - 1 && 0 <= x106 - 1 f675_0_main_InvokeMethod(x114, x115, x116, x117) -> f116_0_even_NE(x118, x119, x120, x121) :|: x116 = x118 && 0 <= x114 - 1 && 0 <= x117 - 1 && 0 <= x116 - 1 f753_0_main_InvokeMethod(x122, x123, x124, x125) -> f168_0_odd_NE(x126, x127, x128, x129) :|: x124 = x126 && 0 <= x122 - 1 && 0 <= x125 - 1 && 0 <= x124 - 1 f116_0_even_NE(x130, x131, x132, x133) -> f168_0_odd_NE(x134, x135, x136, x137) :|: x130 - 1 = x134 && x130 - 1 <= x130 - 1 && 1 <= x130 - 1 f168_0_odd_NE(x138, x139, x140, x141) -> f116_0_even_NE(x142, x143, x144, x145) :|: x138 - 1 = x142 && x138 - 1 <= x138 - 1 && 1 <= x138 - 1 __init(x146, x147, x148, x149) -> f1_0_main_ConstantStackPush(x150, x151, x152, x153) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3, arg4) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4) -> f626_0_main_GE(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 (2) f626_0_main_GE(x, x1, x2, x3) -> f675_0_main_InvokeMethod(x4, x5, x6, x7) :|: x1 <= x2 - 1 && 0 <= x2 - 1 && -1 <= x9 - 1 && x4 <= x && 0 <= x - 1 && 0 <= x4 - 1 && x1 = x5 && x2 = x7 (3) f626_0_main_GE(x10, x11, x12, x13) -> f60_0_power_GT(x14, x15, x16, x17) :|: x12 = x14 && 0 <= x10 - 1 && -1 <= x15 - 1 && 0 <= x12 - 1 && x11 <= x12 - 1 (4) f626_0_main_GE(x18, x19, x20, x22) -> f675_0_main_InvokeMethod(x23, x24, x25, x26) :|: x20 = x26 && 1 = x25 && x19 = x24 && 0 <= x23 - 1 && 0 <= x18 - 1 && x23 <= x18 && 0 <= x20 - 1 && x19 <= x20 - 1 (5) f626_0_main_GE(x27, x28, x29, x30) -> f675_0_main_InvokeMethod(x31, x32, x33, x34) :|: x28 <= x29 - 1 && 0 <= x29 - 1 && -1 <= x35 - 1 && x31 <= x27 && 0 <= x27 - 1 && 0 <= x31 - 1 && x28 = x32 && x29 = x33 && x29 = x34 (6) f675_0_main_InvokeMethod(x37, x38, x39, x40) -> f712_0_main_ArrayAccess(x41, x42, x43, x44) :|: x40 = x43 && x38 = x42 && 0 <= x41 - 1 && 0 <= x37 - 1 && x41 <= x37 && 0 <= x39 - 1 && 0 <= x40 - 1 (7) f712_0_main_ArrayAccess(x46, x47, x48, x49) -> f60_0_power_GT(x50, x51, x52, x53) :|: x48 = x50 && 0 <= x46 - 1 && x47 <= x48 - 1 && -1 <= x51 - 1 && 0 <= x48 - 1 (8) f712_0_main_ArrayAccess(x54, x55, x56, x57) -> f753_0_main_InvokeMethod(x58, x59, x60, x61) :|: 0 <= x56 - 1 && -1 <= x62 - 1 && x55 <= x56 - 1 && x58 <= x54 && 0 <= x54 - 1 && 0 <= x58 - 1 && x55 = x59 && x56 = x61 (9) f712_0_main_ArrayAccess(x63, x64, x65, x66) -> f753_0_main_InvokeMethod(x67, x68, x70, x71) :|: x65 = x71 && 1 = x70 && x64 = x68 && 0 <= x67 - 1 && 0 <= x63 - 1 && x67 <= x63 && 0 <= x65 - 1 && x64 <= x65 - 1 (10) f712_0_main_ArrayAccess(x72, x73, x74, x75) -> f753_0_main_InvokeMethod(x76, x77, x78, x79) :|: 0 <= x74 - 1 && -1 <= x80 - 1 && x73 <= x74 - 1 && x76 <= x72 && 0 <= x72 - 1 && 0 <= x76 - 1 && x73 = x77 && x74 = x78 && x74 = x79 (11) f753_0_main_InvokeMethod(x81, x82, x83, x84) -> f626_0_main_GE(x85, x86, x87, x88) :|: x84 = x87 && x82 + 1 = x86 && 1 = x83 && 0 <= x85 - 1 && 0 <= x81 - 1 && 0 <= x84 - 1 && x85 <= x81 (12) f753_0_main_InvokeMethod(x89, x90, x91, x92) -> f626_0_main_GE(x93, x94, x95, x96) :|: x92 = x95 && x90 + 1 = x94 && 0 <= x93 - 1 && 0 <= x89 - 1 && x93 <= x89 && 0 <= x92 - 1 && 0 <= x91 - 1 (13) f60_0_power_GT(x97, x98, x99, x100) -> f60_0_power_GT'(x101, x102, x103, x104) :|: 0 <= x97 - 1 && 1 <= x98 - 1 && 1 <= x97 * x97 && 0 <= x105 - 1 && x105 <= x98 - 1 && x97 = x101 && x98 = x102 (14) f60_0_power_GT'(x106, x107, x108, x109) -> f60_0_power_GT(x110, x111, x112, x113) :|: x106 * x106 = x110 && 0 <= x107 - 2 * x111 && x107 - 2 * x111 <= 1 && 0 <= x111 - 1 && x111 <= x107 - 1 && 1 <= x106 * x106 && 1 <= x107 - 1 && 0 <= x106 - 1 (15) f675_0_main_InvokeMethod(x114, x115, x116, x117) -> f116_0_even_NE(x118, x119, x120, x121) :|: x116 = x118 && 0 <= x114 - 1 && 0 <= x117 - 1 && 0 <= x116 - 1 (16) f753_0_main_InvokeMethod(x122, x123, x124, x125) -> f168_0_odd_NE(x126, x127, x128, x129) :|: x124 = x126 && 0 <= x122 - 1 && 0 <= x125 - 1 && 0 <= x124 - 1 (17) f116_0_even_NE(x130, x131, x132, x133) -> f168_0_odd_NE(x134, x135, x136, x137) :|: x130 - 1 = x134 && x130 - 1 <= x130 - 1 && 1 <= x130 - 1 (18) f168_0_odd_NE(x138, x139, x140, x141) -> f116_0_even_NE(x142, x143, x144, x145) :|: x138 - 1 = x142 && x138 - 1 <= x138 - 1 && 1 <= x138 - 1 (19) __init(x146, x147, x148, x149) -> f1_0_main_ConstantStackPush(x150, x151, x152, x153) :|: 0 <= 0 Arcs: (1) -> (2), (3), (4), (5) (2) -> (6), (15) (3) -> (13) (4) -> (6), (15) (5) -> (6), (15) (6) -> (7), (8), (9), (10) (7) -> (13) (8) -> (11), (12), (16) (9) -> (11), (12), (16) (10) -> (11), (12), (16) (11) -> (2), (3), (4), (5) (12) -> (2), (3), (4), (5) (13) -> (14) (14) -> (13) (15) -> (17) (16) -> (18) (17) -> (18) (18) -> (17) (19) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) f626_0_main_GE(x, x1, x2, x3) -> f675_0_main_InvokeMethod(x4, x5, x6, x7) :|: x1 <= x2 - 1 && 0 <= x2 - 1 && -1 <= x9 - 1 && x4 <= x && 0 <= x - 1 && 0 <= x4 - 1 && x1 = x5 && x2 = x7 (2) f753_0_main_InvokeMethod(x81, x82, x83, x84) -> f626_0_main_GE(x85, x86, x87, x88) :|: x84 = x87 && x82 + 1 = x86 && 1 = x83 && 0 <= x85 - 1 && 0 <= x81 - 1 && 0 <= x84 - 1 && x85 <= x81 (3) f712_0_main_ArrayAccess(x54, x55, x56, x57) -> f753_0_main_InvokeMethod(x58, x59, x60, x61) :|: 0 <= x56 - 1 && -1 <= x62 - 1 && x55 <= x56 - 1 && x58 <= x54 && 0 <= x54 - 1 && 0 <= x58 - 1 && x55 = x59 && x56 = x61 (4) f675_0_main_InvokeMethod(x37, x38, x39, x40) -> f712_0_main_ArrayAccess(x41, x42, x43, x44) :|: x40 = x43 && x38 = x42 && 0 <= x41 - 1 && 0 <= x37 - 1 && x41 <= x37 && 0 <= x39 - 1 && 0 <= x40 - 1 (5) f626_0_main_GE(x27, x28, x29, x30) -> f675_0_main_InvokeMethod(x31, x32, x33, x34) :|: x28 <= x29 - 1 && 0 <= x29 - 1 && -1 <= x35 - 1 && x31 <= x27 && 0 <= x27 - 1 && 0 <= x31 - 1 && x28 = x32 && x29 = x33 && x29 = x34 (6) f626_0_main_GE(x18, x19, x20, x22) -> f675_0_main_InvokeMethod(x23, x24, x25, x26) :|: x20 = x26 && 1 = x25 && x19 = x24 && 0 <= x23 - 1 && 0 <= x18 - 1 && x23 <= x18 && 0 <= x20 - 1 && x19 <= x20 - 1 (7) f753_0_main_InvokeMethod(x89, x90, x91, x92) -> f626_0_main_GE(x93, x94, x95, x96) :|: x92 = x95 && x90 + 1 = x94 && 0 <= x93 - 1 && 0 <= x89 - 1 && x93 <= x89 && 0 <= x92 - 1 && 0 <= x91 - 1 (8) f712_0_main_ArrayAccess(x72, x73, x74, x75) -> f753_0_main_InvokeMethod(x76, x77, x78, x79) :|: 0 <= x74 - 1 && -1 <= x80 - 1 && x73 <= x74 - 1 && x76 <= x72 && 0 <= x72 - 1 && 0 <= x76 - 1 && x73 = x77 && x74 = x78 && x74 = x79 (9) f712_0_main_ArrayAccess(x63, x64, x65, x66) -> f753_0_main_InvokeMethod(x67, x68, x70, x71) :|: x65 = x71 && 1 = x70 && x64 = x68 && 0 <= x67 - 1 && 0 <= x63 - 1 && x67 <= x63 && 0 <= x65 - 1 && x64 <= x65 - 1 Arcs: (1) -> (4) (2) -> (1), (5), (6) (3) -> (2), (7) (4) -> (3), (8), (9) (5) -> (4) (6) -> (4) (7) -> (1), (5), (6) (8) -> (2), (7) (9) -> (2), (7) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f626_0_main_GE(x18:0, x19:0, x20:0, x22:0) -> f712_0_main_ArrayAccess(x41:0, x19:0, x20:0, x44:0) :|: x20:0 - 1 >= x19:0 && x20:0 > 0 && x23:0 <= x18:0 && x41:0 <= x23:0 && x18:0 > 0 && x41:0 > 0 && x23:0 > 0 f753_0_main_InvokeMethod(x81:0, x82:0, cons_1, x84:0) -> f626_0_main_GE(x85:0, x82:0 + 1, x84:0, x88:0) :|: x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1 f712_0_main_ArrayAccess(x72:0, x73:0, x74:0, x75:0) -> f753_0_main_InvokeMethod(x76:0, x73:0, x74:0, x74:0) :|: x72:0 > 0 && x76:0 > 0 && x76:0 <= x72:0 && x74:0 - 1 >= x73:0 && x80:0 > -1 && x74:0 > 0 f712_0_main_ArrayAccess(x54:0, x55:0, x56:0, x57:0) -> f753_0_main_InvokeMethod(x58:0, x55:0, x60:0, x56:0) :|: x54:0 > 0 && x58:0 > 0 && x58:0 <= x54:0 && x56:0 - 1 >= x55:0 && x62:0 > -1 && x56:0 > 0 f626_0_main_GE(x, x1, x2, x3) -> f712_0_main_ArrayAccess(x4, x1, x2, x5) :|: x6 > 0 && x7 >= x4 && x > 0 && x7 > 0 && x >= x7 && x4 > 0 && x8 > -1 && x2 > 0 && x2 - 1 >= x1 f626_0_main_GE(x9, x10, x11, x12) -> f712_0_main_ArrayAccess(x13, x10, x11, x14) :|: x13 <= x15 && x15 > 0 && x9 > 0 && x13 > 0 && x15 <= x9 && x16 > -1 && x11 > 0 && x11 - 1 >= x10 f712_0_main_ArrayAccess(x63:0, x64:0, x65:0, x66:0) -> f753_0_main_InvokeMethod(x67:0, x64:0, 1, x65:0) :|: x65:0 > 0 && x65:0 - 1 >= x64:0 && x67:0 <= x63:0 && x67:0 > 0 && x63:0 > 0 f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, x90:0 + 1, x92:0, x96:0) :|: x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0 ---------------------------------------- (8) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f626_0_main_GE(x1, x2, x3, x4) -> f626_0_main_GE(x1, x2, x3) f712_0_main_ArrayAccess(x1, x2, x3, x4) -> f712_0_main_ArrayAccess(x1, x2, x3) ---------------------------------------- (9) Obligation: Rules: f626_0_main_GE(x18:0, x19:0, x20:0) -> f712_0_main_ArrayAccess(x41:0, x19:0, x20:0) :|: x20:0 - 1 >= x19:0 && x20:0 > 0 && x23:0 <= x18:0 && x41:0 <= x23:0 && x18:0 > 0 && x41:0 > 0 && x23:0 > 0 f753_0_main_InvokeMethod(x81:0, x82:0, cons_1, x84:0) -> f626_0_main_GE(x85:0, x82:0 + 1, x84:0) :|: x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1 f712_0_main_ArrayAccess(x72:0, x73:0, x74:0) -> f753_0_main_InvokeMethod(x76:0, x73:0, x74:0, x74:0) :|: x72:0 > 0 && x76:0 > 0 && x76:0 <= x72:0 && x74:0 - 1 >= x73:0 && x80:0 > -1 && x74:0 > 0 f712_0_main_ArrayAccess(x54:0, x55:0, x56:0) -> f753_0_main_InvokeMethod(x58:0, x55:0, x60:0, x56:0) :|: x54:0 > 0 && x58:0 > 0 && x58:0 <= x54:0 && x56:0 - 1 >= x55:0 && x62:0 > -1 && x56:0 > 0 f626_0_main_GE(x, x1, x2) -> f712_0_main_ArrayAccess(x4, x1, x2) :|: x6 > 0 && x7 >= x4 && x > 0 && x7 > 0 && x >= x7 && x4 > 0 && x8 > -1 && x2 > 0 && x2 - 1 >= x1 f626_0_main_GE(x9, x10, x11) -> f712_0_main_ArrayAccess(x13, x10, x11) :|: x13 <= x15 && x15 > 0 && x9 > 0 && x13 > 0 && x15 <= x9 && x16 > -1 && x11 > 0 && x11 - 1 >= x10 f712_0_main_ArrayAccess(x63:0, x64:0, x65:0) -> f753_0_main_InvokeMethod(x67:0, x64:0, 1, x65:0) :|: x65:0 > 0 && x65:0 - 1 >= x64:0 && x67:0 <= x63:0 && x67:0 > 0 && x63:0 > 0 f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, x90:0 + 1, x92:0) :|: x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0 ---------------------------------------- (10) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f626_0_main_GE(INTEGER, INTEGER, INTEGER) f712_0_main_ArrayAccess(INTEGER, INTEGER, INTEGER) f753_0_main_InvokeMethod(INTEGER, VARIABLE, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (11) Obligation: Rules: f626_0_main_GE(x18:0, x19:0, x20:0) -> f712_0_main_ArrayAccess(x41:0, x19:0, x20:0) :|: x20:0 - 1 >= x19:0 && x20:0 > 0 && x23:0 <= x18:0 && x41:0 <= x23:0 && x18:0 > 0 && x41:0 > 0 && x23:0 > 0 f753_0_main_InvokeMethod(x81:0, x82:0, c, x84:0) -> f626_0_main_GE(x85:0, c1, x84:0) :|: c1 = x82:0 + 1 && c = 1 && (x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1) f712_0_main_ArrayAccess(x72:0, x73:0, x74:0) -> f753_0_main_InvokeMethod(x76:0, x73:0, x74:0, x74:0) :|: x72:0 > 0 && x76:0 > 0 && x76:0 <= x72:0 && x74:0 - 1 >= x73:0 && x80:0 > -1 && x74:0 > 0 f712_0_main_ArrayAccess(x54:0, x55:0, x56:0) -> f753_0_main_InvokeMethod(x58:0, x55:0, x60:0, x56:0) :|: x54:0 > 0 && x58:0 > 0 && x58:0 <= x54:0 && x56:0 - 1 >= x55:0 && x62:0 > -1 && x56:0 > 0 f626_0_main_GE(x, x1, x2) -> f712_0_main_ArrayAccess(x4, x1, x2) :|: x6 > 0 && x7 >= x4 && x > 0 && x7 > 0 && x >= x7 && x4 > 0 && x8 > -1 && x2 > 0 && x2 - 1 >= x1 f626_0_main_GE(x9, x10, x11) -> f712_0_main_ArrayAccess(x13, x10, x11) :|: x13 <= x15 && x15 > 0 && x9 > 0 && x13 > 0 && x15 <= x9 && x16 > -1 && x11 > 0 && x11 - 1 >= x10 f712_0_main_ArrayAccess(x63:0, x64:0, x65:0) -> f753_0_main_InvokeMethod(x67:0, x64:0, c2, x65:0) :|: c2 = 1 && (x65:0 > 0 && x65:0 - 1 >= x64:0 && x67:0 <= x63:0 && x67:0 > 0 && x63:0 > 0) f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, c3, x92:0) :|: c3 = x90:0 + 1 && (x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0) ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f626_0_main_GE ] = 3*f626_0_main_GE_3 + -3*f626_0_main_GE_2 [ f712_0_main_ArrayAccess ] = -3*f712_0_main_ArrayAccess_2 + 3*f712_0_main_ArrayAccess_3 + -1 [ f753_0_main_InvokeMethod ] = 3*f753_0_main_InvokeMethod_4 + -3*f753_0_main_InvokeMethod_2 + -2 The following rules are decreasing: f626_0_main_GE(x18:0, x19:0, x20:0) -> f712_0_main_ArrayAccess(x41:0, x19:0, x20:0) :|: x20:0 - 1 >= x19:0 && x20:0 > 0 && x23:0 <= x18:0 && x41:0 <= x23:0 && x18:0 > 0 && x41:0 > 0 && x23:0 > 0 f753_0_main_InvokeMethod(x81:0, x82:0, c, x84:0) -> f626_0_main_GE(x85:0, c1, x84:0) :|: c1 = x82:0 + 1 && c = 1 && (x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1) f712_0_main_ArrayAccess(x72:0, x73:0, x74:0) -> f753_0_main_InvokeMethod(x76:0, x73:0, x74:0, x74:0) :|: x72:0 > 0 && x76:0 > 0 && x76:0 <= x72:0 && x74:0 - 1 >= x73:0 && x80:0 > -1 && x74:0 > 0 f712_0_main_ArrayAccess(x54:0, x55:0, x56:0) -> f753_0_main_InvokeMethod(x58:0, x55:0, x60:0, x56:0) :|: x54:0 > 0 && x58:0 > 0 && x58:0 <= x54:0 && x56:0 - 1 >= x55:0 && x62:0 > -1 && x56:0 > 0 f626_0_main_GE(x, x1, x2) -> f712_0_main_ArrayAccess(x4, x1, x2) :|: x6 > 0 && x7 >= x4 && x > 0 && x7 > 0 && x >= x7 && x4 > 0 && x8 > -1 && x2 > 0 && x2 - 1 >= x1 f626_0_main_GE(x9, x10, x11) -> f712_0_main_ArrayAccess(x13, x10, x11) :|: x13 <= x15 && x15 > 0 && x9 > 0 && x13 > 0 && x15 <= x9 && x16 > -1 && x11 > 0 && x11 - 1 >= x10 f712_0_main_ArrayAccess(x63:0, x64:0, x65:0) -> f753_0_main_InvokeMethod(x67:0, x64:0, c2, x65:0) :|: c2 = 1 && (x65:0 > 0 && x65:0 - 1 >= x64:0 && x67:0 <= x63:0 && x67:0 > 0 && x63:0 > 0) f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, c3, x92:0) :|: c3 = x90:0 + 1 && (x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0) The following rules are bounded: f626_0_main_GE(x18:0, x19:0, x20:0) -> f712_0_main_ArrayAccess(x41:0, x19:0, x20:0) :|: x20:0 - 1 >= x19:0 && x20:0 > 0 && x23:0 <= x18:0 && x41:0 <= x23:0 && x18:0 > 0 && x41:0 > 0 && x23:0 > 0 f712_0_main_ArrayAccess(x72:0, x73:0, x74:0) -> f753_0_main_InvokeMethod(x76:0, x73:0, x74:0, x74:0) :|: x72:0 > 0 && x76:0 > 0 && x76:0 <= x72:0 && x74:0 - 1 >= x73:0 && x80:0 > -1 && x74:0 > 0 f712_0_main_ArrayAccess(x54:0, x55:0, x56:0) -> f753_0_main_InvokeMethod(x58:0, x55:0, x60:0, x56:0) :|: x54:0 > 0 && x58:0 > 0 && x58:0 <= x54:0 && x56:0 - 1 >= x55:0 && x62:0 > -1 && x56:0 > 0 f626_0_main_GE(x, x1, x2) -> f712_0_main_ArrayAccess(x4, x1, x2) :|: x6 > 0 && x7 >= x4 && x > 0 && x7 > 0 && x >= x7 && x4 > 0 && x8 > -1 && x2 > 0 && x2 - 1 >= x1 f626_0_main_GE(x9, x10, x11) -> f712_0_main_ArrayAccess(x13, x10, x11) :|: x13 <= x15 && x15 > 0 && x9 > 0 && x13 > 0 && x15 <= x9 && x16 > -1 && x11 > 0 && x11 - 1 >= x10 f712_0_main_ArrayAccess(x63:0, x64:0, x65:0) -> f753_0_main_InvokeMethod(x67:0, x64:0, c2, x65:0) :|: c2 = 1 && (x65:0 > 0 && x65:0 - 1 >= x64:0 && x67:0 <= x63:0 && x67:0 > 0 && x63:0 > 0) ---------------------------------------- (13) Obligation: Rules: f753_0_main_InvokeMethod(x81:0, x82:0, c, x84:0) -> f626_0_main_GE(x85:0, c1, x84:0) :|: c1 = x82:0 + 1 && c = 1 && (x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1) f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, c3, x92:0) :|: c3 = x90:0 + 1 && (x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0) ---------------------------------------- (14) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f753_0_main_InvokeMethod ] = 0 [ f626_0_main_GE ] = -1*f626_0_main_GE_1 The following rules are decreasing: f753_0_main_InvokeMethod(x81:0, x82:0, c, x84:0) -> f626_0_main_GE(x85:0, c1, x84:0) :|: c1 = x82:0 + 1 && c = 1 && (x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1) f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, c3, x92:0) :|: c3 = x90:0 + 1 && (x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0) The following rules are bounded: f753_0_main_InvokeMethod(x81:0, x82:0, c, x84:0) -> f626_0_main_GE(x85:0, c1, x84:0) :|: c1 = x82:0 + 1 && c = 1 && (x84:0 > 0 && x85:0 <= x81:0 && x85:0 > 0 && x81:0 > 0 && cons_1 = 1) f753_0_main_InvokeMethod(x89:0, x90:0, x91:0, x92:0) -> f626_0_main_GE(x93:0, c3, x92:0) :|: c3 = x90:0 + 1 && (x92:0 > 0 && x91:0 > 0 && x93:0 <= x89:0 && x93:0 > 0 && x89:0 > 0) ---------------------------------------- (15) YES ---------------------------------------- (16) Obligation: Termination digraph: Nodes: (1) f116_0_even_NE(x130, x131, x132, x133) -> f168_0_odd_NE(x134, x135, x136, x137) :|: x130 - 1 = x134 && x130 - 1 <= x130 - 1 && 1 <= x130 - 1 (2) f168_0_odd_NE(x138, x139, x140, x141) -> f116_0_even_NE(x142, x143, x144, x145) :|: x138 - 1 = x142 && x138 - 1 <= x138 - 1 && 1 <= x138 - 1 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f116_0_even_NE(x130:0, x131:0, x132:0, x133:0) -> f116_0_even_NE(x130:0 - 2, x143:0, x144:0, x145:0) :|: x130:0 > 2 ---------------------------------------- (19) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f116_0_even_NE(x1, x2, x3, x4) -> f116_0_even_NE(x1) ---------------------------------------- (20) Obligation: Rules: f116_0_even_NE(x130:0) -> f116_0_even_NE(x130:0 - 2) :|: x130:0 > 2 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f116_0_even_NE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: f116_0_even_NE(x130:0) -> f116_0_even_NE(c) :|: c = x130:0 - 2 && x130:0 > 2 ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f116_0_even_NE(x)] = x The following rules are decreasing: f116_0_even_NE(x130:0) -> f116_0_even_NE(c) :|: c = x130:0 - 2 && x130:0 > 2 The following rules are bounded: f116_0_even_NE(x130:0) -> f116_0_even_NE(c) :|: c = x130:0 - 2 && x130:0 > 2 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: Termination digraph: Nodes: (1) f60_0_power_GT(x97, x98, x99, x100) -> f60_0_power_GT'(x101, x102, x103, x104) :|: 0 <= x97 - 1 && 1 <= x98 - 1 && 1 <= x97 * x97 && 0 <= x105 - 1 && x105 <= x98 - 1 && x97 = x101 && x98 = x102 (2) f60_0_power_GT'(x106, x107, x108, x109) -> f60_0_power_GT(x110, x111, x112, x113) :|: x106 * x106 = x110 && 0 <= x107 - 2 * x111 && x107 - 2 * x111 <= 1 && 0 <= x111 - 1 && x111 <= x107 - 1 && 1 <= x106 * x106 && 1 <= x107 - 1 && 0 <= x106 - 1 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (27) Obligation: Rules: f60_0_power_GT(x101:0, x102:0, x99:0, x100:0) -> f60_0_power_GT(x101:0 * x101:0, x111:0, x112:0, x113:0) :|: x105:0 <= x102:0 - 1 && x105:0 > 0 && x111:0 <= x102:0 - 1 && x101:0 * x101:0 >= 1 && x111:0 > 0 && x101:0 > 0 && x102:0 > 1 && x102:0 - 2 * x111:0 >= 0 && x102:0 - 2 * x111:0 <= 1 ---------------------------------------- (28) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f60_0_power_GT(x1, x2, x3, x4) -> f60_0_power_GT(x1, x2) ---------------------------------------- (29) Obligation: Rules: f60_0_power_GT(x101:0, x102:0) -> f60_0_power_GT(x101:0 * x101:0, x111:0) :|: x105:0 <= x102:0 - 1 && x105:0 > 0 && x111:0 <= x102:0 - 1 && x101:0 * x101:0 >= 1 && x111:0 > 0 && x101:0 > 0 && x102:0 > 1 && x102:0 - 2 * x111:0 >= 0 && x102:0 - 2 * x111:0 <= 1 ---------------------------------------- (30) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f60_0_power_GT(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (31) Obligation: Rules: f60_0_power_GT(x101:0, x102:0) -> f60_0_power_GT(c, x111:0) :|: c = x101:0 * x101:0 && (x105:0 <= x102:0 - 1 && x105:0 > 0 && x111:0 <= x102:0 - 1 && x101:0 * x101:0 >= 1 && x111:0 > 0 && x101:0 > 0 && x102:0 > 1 && x102:0 - 2 * x111:0 >= 0 && x102:0 - 2 * x111:0 <= 1) ---------------------------------------- (32) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f60_0_power_GT(x, x1)] = x1 The following rules are decreasing: f60_0_power_GT(x101:0, x102:0) -> f60_0_power_GT(c, x111:0) :|: c = x101:0 * x101:0 && (x105:0 <= x102:0 - 1 && x105:0 > 0 && x111:0 <= x102:0 - 1 && x101:0 * x101:0 >= 1 && x111:0 > 0 && x101:0 > 0 && x102:0 > 1 && x102:0 - 2 * x111:0 >= 0 && x102:0 - 2 * x111:0 <= 1) The following rules are bounded: f60_0_power_GT(x101:0, x102:0) -> f60_0_power_GT(c, x111:0) :|: c = x101:0 * x101:0 && (x105:0 <= x102:0 - 1 && x105:0 > 0 && x111:0 <= x102:0 - 1 && x101:0 * x101:0 >= 1 && x111:0 > 0 && x101:0 > 0 && x102:0 > 1 && x102:0 - 2 * x111:0 >= 0 && x102:0 - 2 * x111:0 <= 1) ---------------------------------------- (33) YES