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, 1586 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IRSwT (8) TempFilterProof [SOUND, 52 ms] (9) IntTRS (10) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (11) IntTRS (12) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (13) YES (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (18) IRSwT (19) TempFilterProof [SOUND, 78 ms] (20) IntTRS (21) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (24) IntTRS (25) RankingReductionPairProof [EQUIVALENT, 3 ms] (26) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4) -> f117_0_main_GT(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f117_0_main_GT(x, x1, x2, x3) -> f197_0_main_GT(x4, x5, x6, x7) :|: x2 = x7 && 0 = x6 && x1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && x4 <= x && -1 <= x2 - 1 && x1 <= x2 f197_0_main_GT(x8, x9, x10, x11) -> f117_0_main_GT(x12, x13, x14, x15) :|: x11 = x14 && x9 + 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x11 <= x10 - 1 f197_0_main_GT(x16, x17, x18, x19) -> f216_0_parts_GT(x20, x21, x22, x23) :|: x17 = x21 && x18 = x20 && 0 <= x16 - 1 && x18 <= x19 && x17 <= x19 f197_0_main_GT(x24, x25, x26, x27) -> f197_0_main_GT(x28, x29, x30, x31) :|: x27 = x31 && x26 + 1 = x30 && 0 = x29 && 0 = x25 && 0 <= x28 - 1 && 0 <= x24 - 1 && x28 <= x24 && x26 <= x27 && -1 <= x27 - 1 f197_0_main_GT(x32, x33, x34, x35) -> f197_0_main_GT(x36, x37, x38, x39) :|: x35 = x39 && 1 = x38 && x33 = x37 && 0 = x34 && 0 <= x36 - 1 && 0 <= x32 - 1 && x36 <= x32 && -1 <= x35 - 1 && x33 <= x35 f310_0_parts_Return(x40, x41, x42, x43) -> f197_0_main_GT(x44, x45, x46, x48) :|: x43 = x48 && x42 + 1 = x46 && x41 = x45 && 0 <= x44 - 1 && 0 <= x40 - 1 && -1 <= x43 - 1 && x44 <= x40 f197_0_main_GT(x49, x51, x52, x53) -> f197_0_main_GT(x54, x55, x56, x57) :|: x53 = x57 && x52 + 1 = x56 && x51 = x55 && 0 <= x54 - 1 && 0 <= x49 - 1 && x54 <= x49 && -1 <= x53 - 1 && x52 <= x53 && x51 <= x53 f216_0_parts_GT(x58, x59, x60, x61) -> f216_0_parts_GT(x62, x63, x64, x65) :|: x59 = x63 && x59 = x62 && 1 <= x58 - 1 && x59 <= x58 - 1 && 0 <= x59 - 1 f216_0_parts_GT(x66, x67, x68, x69) -> f216_0_parts_GT(x70, x71, x72, x73) :|: x67 - x66 = x71 && x66 = x70 && 0 <= x66 - 1 && x66 <= x67 && 0 <= x67 - 1 f216_0_parts_GT(x74, x75, x76, x77) -> f409_0_parts_InvokeMethod(x78, x79, x80, x81) :|: x74 - 1 = x80 && x75 = x79 && x74 = x78 && x74 <= x75 && x75 - x74 = 0 && 0 <= x74 - 1 && 0 <= x75 - 1 f314_0_parts_Return(x82, x83, x84, x85) -> f409_0_parts_InvokeMethod(x86, x87, x88, x89) :|: x83 - 1 = x88 && x82 = x87 && x83 = x86 && 0 <= x83 - 1 f216_0_parts_GT(x90, x91, x92, x93) -> f409_0_parts_InvokeMethod(x94, x95, x96, x97) :|: x90 - 1 = x96 && x91 = x95 && x90 = x94 && 0 <= x90 - 1 && x90 <= x91 && 0 <= x91 - 1 f409_0_parts_InvokeMethod(x98, x99, x100, x101) -> f216_0_parts_GT(x102, x103, x104, x105) :|: 0 <= x99 - 1 && 0 <= x98 - 1 && 0 <= x106 - 1 && x100 <= x98 - 1 && x100 = x102 && x99 = x103 f216_0_parts_GT(x107, x108, x109, x110) -> f216_0_parts_GT(x111, x112, x113, x114) :|: 0 <= x108 - 1 && 1 <= x107 - 1 && x107 <= x108 && x107 - 1 <= x107 - 1 && 0 <= x115 - 1 && x107 - 1 = x111 && x108 = x112 __init(x116, x117, x118, x119) -> f1_0_main_ConstantStackPush(x120, x121, x122, x123) :|: 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) -> f117_0_main_GT(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f117_0_main_GT(x, x1, x2, x3) -> f197_0_main_GT(x4, x5, x6, x7) :|: x2 = x7 && 0 = x6 && x1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && x4 <= x && -1 <= x2 - 1 && x1 <= x2 f197_0_main_GT(x8, x9, x10, x11) -> f117_0_main_GT(x12, x13, x14, x15) :|: x11 = x14 && x9 + 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x11 <= x10 - 1 f197_0_main_GT(x16, x17, x18, x19) -> f216_0_parts_GT(x20, x21, x22, x23) :|: x17 = x21 && x18 = x20 && 0 <= x16 - 1 && x18 <= x19 && x17 <= x19 f197_0_main_GT(x24, x25, x26, x27) -> f197_0_main_GT(x28, x29, x30, x31) :|: x27 = x31 && x26 + 1 = x30 && 0 = x29 && 0 = x25 && 0 <= x28 - 1 && 0 <= x24 - 1 && x28 <= x24 && x26 <= x27 && -1 <= x27 - 1 f197_0_main_GT(x32, x33, x34, x35) -> f197_0_main_GT(x36, x37, x38, x39) :|: x35 = x39 && 1 = x38 && x33 = x37 && 0 = x34 && 0 <= x36 - 1 && 0 <= x32 - 1 && x36 <= x32 && -1 <= x35 - 1 && x33 <= x35 f310_0_parts_Return(x40, x41, x42, x43) -> f197_0_main_GT(x44, x45, x46, x48) :|: x43 = x48 && x42 + 1 = x46 && x41 = x45 && 0 <= x44 - 1 && 0 <= x40 - 1 && -1 <= x43 - 1 && x44 <= x40 f197_0_main_GT(x49, x51, x52, x53) -> f197_0_main_GT(x54, x55, x56, x57) :|: x53 = x57 && x52 + 1 = x56 && x51 = x55 && 0 <= x54 - 1 && 0 <= x49 - 1 && x54 <= x49 && -1 <= x53 - 1 && x52 <= x53 && x51 <= x53 f216_0_parts_GT(x58, x59, x60, x61) -> f216_0_parts_GT(x62, x63, x64, x65) :|: x59 = x63 && x59 = x62 && 1 <= x58 - 1 && x59 <= x58 - 1 && 0 <= x59 - 1 f216_0_parts_GT(x66, x67, x68, x69) -> f216_0_parts_GT(x70, x71, x72, x73) :|: x67 - x66 = x71 && x66 = x70 && 0 <= x66 - 1 && x66 <= x67 && 0 <= x67 - 1 f216_0_parts_GT(x74, x75, x76, x77) -> f409_0_parts_InvokeMethod(x78, x79, x80, x81) :|: x74 - 1 = x80 && x75 = x79 && x74 = x78 && x74 <= x75 && x75 - x74 = 0 && 0 <= x74 - 1 && 0 <= x75 - 1 f314_0_parts_Return(x82, x83, x84, x85) -> f409_0_parts_InvokeMethod(x86, x87, x88, x89) :|: x83 - 1 = x88 && x82 = x87 && x83 = x86 && 0 <= x83 - 1 f216_0_parts_GT(x90, x91, x92, x93) -> f409_0_parts_InvokeMethod(x94, x95, x96, x97) :|: x90 - 1 = x96 && x91 = x95 && x90 = x94 && 0 <= x90 - 1 && x90 <= x91 && 0 <= x91 - 1 f409_0_parts_InvokeMethod(x98, x99, x100, x101) -> f216_0_parts_GT(x102, x103, x104, x105) :|: 0 <= x99 - 1 && 0 <= x98 - 1 && 0 <= x106 - 1 && x100 <= x98 - 1 && x100 = x102 && x99 = x103 f216_0_parts_GT(x107, x108, x109, x110) -> f216_0_parts_GT(x111, x112, x113, x114) :|: 0 <= x108 - 1 && 1 <= x107 - 1 && x107 <= x108 && x107 - 1 <= x107 - 1 && 0 <= x115 - 1 && x107 - 1 = x111 && x108 = x112 __init(x116, x117, x118, x119) -> f1_0_main_ConstantStackPush(x120, x121, x122, x123) :|: 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) -> f117_0_main_GT(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 (2) f117_0_main_GT(x, x1, x2, x3) -> f197_0_main_GT(x4, x5, x6, x7) :|: x2 = x7 && 0 = x6 && x1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && x4 <= x && -1 <= x2 - 1 && x1 <= x2 (3) f197_0_main_GT(x8, x9, x10, x11) -> f117_0_main_GT(x12, x13, x14, x15) :|: x11 = x14 && x9 + 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x11 <= x10 - 1 (4) f197_0_main_GT(x16, x17, x18, x19) -> f216_0_parts_GT(x20, x21, x22, x23) :|: x17 = x21 && x18 = x20 && 0 <= x16 - 1 && x18 <= x19 && x17 <= x19 (5) f197_0_main_GT(x24, x25, x26, x27) -> f197_0_main_GT(x28, x29, x30, x31) :|: x27 = x31 && x26 + 1 = x30 && 0 = x29 && 0 = x25 && 0 <= x28 - 1 && 0 <= x24 - 1 && x28 <= x24 && x26 <= x27 && -1 <= x27 - 1 (6) f197_0_main_GT(x32, x33, x34, x35) -> f197_0_main_GT(x36, x37, x38, x39) :|: x35 = x39 && 1 = x38 && x33 = x37 && 0 = x34 && 0 <= x36 - 1 && 0 <= x32 - 1 && x36 <= x32 && -1 <= x35 - 1 && x33 <= x35 (7) f310_0_parts_Return(x40, x41, x42, x43) -> f197_0_main_GT(x44, x45, x46, x48) :|: x43 = x48 && x42 + 1 = x46 && x41 = x45 && 0 <= x44 - 1 && 0 <= x40 - 1 && -1 <= x43 - 1 && x44 <= x40 (8) f197_0_main_GT(x49, x51, x52, x53) -> f197_0_main_GT(x54, x55, x56, x57) :|: x53 = x57 && x52 + 1 = x56 && x51 = x55 && 0 <= x54 - 1 && 0 <= x49 - 1 && x54 <= x49 && -1 <= x53 - 1 && x52 <= x53 && x51 <= x53 (9) f216_0_parts_GT(x58, x59, x60, x61) -> f216_0_parts_GT(x62, x63, x64, x65) :|: x59 = x63 && x59 = x62 && 1 <= x58 - 1 && x59 <= x58 - 1 && 0 <= x59 - 1 (10) f216_0_parts_GT(x66, x67, x68, x69) -> f216_0_parts_GT(x70, x71, x72, x73) :|: x67 - x66 = x71 && x66 = x70 && 0 <= x66 - 1 && x66 <= x67 && 0 <= x67 - 1 (11) f216_0_parts_GT(x74, x75, x76, x77) -> f409_0_parts_InvokeMethod(x78, x79, x80, x81) :|: x74 - 1 = x80 && x75 = x79 && x74 = x78 && x74 <= x75 && x75 - x74 = 0 && 0 <= x74 - 1 && 0 <= x75 - 1 (12) f314_0_parts_Return(x82, x83, x84, x85) -> f409_0_parts_InvokeMethod(x86, x87, x88, x89) :|: x83 - 1 = x88 && x82 = x87 && x83 = x86 && 0 <= x83 - 1 (13) f216_0_parts_GT(x90, x91, x92, x93) -> f409_0_parts_InvokeMethod(x94, x95, x96, x97) :|: x90 - 1 = x96 && x91 = x95 && x90 = x94 && 0 <= x90 - 1 && x90 <= x91 && 0 <= x91 - 1 (14) f409_0_parts_InvokeMethod(x98, x99, x100, x101) -> f216_0_parts_GT(x102, x103, x104, x105) :|: 0 <= x99 - 1 && 0 <= x98 - 1 && 0 <= x106 - 1 && x100 <= x98 - 1 && x100 = x102 && x99 = x103 (15) f216_0_parts_GT(x107, x108, x109, x110) -> f216_0_parts_GT(x111, x112, x113, x114) :|: 0 <= x108 - 1 && 1 <= x107 - 1 && x107 <= x108 && x107 - 1 <= x107 - 1 && 0 <= x115 - 1 && x107 - 1 = x111 && x108 = x112 (16) __init(x116, x117, x118, x119) -> f1_0_main_ConstantStackPush(x120, x121, x122, x123) :|: 0 <= 0 Arcs: (1) -> (2) (2) -> (4), (5), (6), (8) (3) -> (2) (4) -> (9), (10), (11), (13), (15) (5) -> (3), (4), (5), (6), (8) (6) -> (3), (4), (5), (8) (7) -> (3), (4), (5), (6), (8) (8) -> (3), (4), (5), (6), (8) (9) -> (10), (11), (13), (15) (10) -> (9), (10), (11), (13), (15) (11) -> (14) (12) -> (14) (13) -> (14) (14) -> (9), (10), (11), (13), (15) (15) -> (10), (13), (15) (16) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) f117_0_main_GT(x, x1, x2, x3) -> f197_0_main_GT(x4, x5, x6, x7) :|: x2 = x7 && 0 = x6 && x1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && x4 <= x && -1 <= x2 - 1 && x1 <= x2 (2) f197_0_main_GT(x8, x9, x10, x11) -> f117_0_main_GT(x12, x13, x14, x15) :|: x11 = x14 && x9 + 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x11 <= x10 - 1 (3) f197_0_main_GT(x24, x25, x26, x27) -> f197_0_main_GT(x28, x29, x30, x31) :|: x27 = x31 && x26 + 1 = x30 && 0 = x29 && 0 = x25 && 0 <= x28 - 1 && 0 <= x24 - 1 && x28 <= x24 && x26 <= x27 && -1 <= x27 - 1 (4) f197_0_main_GT(x32, x33, x34, x35) -> f197_0_main_GT(x36, x37, x38, x39) :|: x35 = x39 && 1 = x38 && x33 = x37 && 0 = x34 && 0 <= x36 - 1 && 0 <= x32 - 1 && x36 <= x32 && -1 <= x35 - 1 && x33 <= x35 (5) f197_0_main_GT(x49, x51, x52, x53) -> f197_0_main_GT(x54, x55, x56, x57) :|: x53 = x57 && x52 + 1 = x56 && x51 = x55 && 0 <= x54 - 1 && 0 <= x49 - 1 && x54 <= x49 && -1 <= x53 - 1 && x52 <= x53 && x51 <= x53 Arcs: (1) -> (3), (4), (5) (2) -> (1) (3) -> (2), (3), (4), (5) (4) -> (2), (3), (5) (5) -> (2), (3), (4), (5) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f197_0_main_GT(x24:0, cons_0, x26:0, x27:0) -> f197_0_main_GT(x28:0, 0, x26:0 + 1, x27:0) :|: x27:0 >= x26:0 && x27:0 > -1 && x28:0 <= x24:0 && x28:0 > 0 && x24:0 > 0 && cons_0 = 0 f197_0_main_GT(x8:0, x9:0, x10:0, x11:0) -> f197_0_main_GT(x4:0, x9:0 + 1, 0, x11:0) :|: x9:0 + 1 <= x11:0 && x11:0 <= x10:0 - 1 && x11:0 > -1 && x8:0 >= x12:0 && x4:0 <= x12:0 && x8:0 > 0 && x4:0 > 0 && x12:0 > 0 f197_0_main_GT(x, x1, x2, x3) -> f197_0_main_GT(x4, x1, 1, x3) :|: x3 > -1 && x3 >= x1 && x4 <= x && x4 > 0 && x > 0 && x2 = 0 f197_0_main_GT(x49:0, x51:0, x52:0, x53:0) -> f197_0_main_GT(x54:0, x51:0, x52:0 + 1, x53:0) :|: x53:0 >= x52:0 && x53:0 >= x51:0 && x53:0 > -1 && x54:0 <= x49:0 && x54:0 > 0 && x49:0 > 0 ---------------------------------------- (8) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f197_0_main_GT(INTEGER, VARIABLE, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (9) Obligation: Rules: f197_0_main_GT(x24:0, c, x26:0, x27:0) -> f197_0_main_GT(x28:0, c1, c2, x27:0) :|: c2 = x26:0 + 1 && (c1 = 0 && c = 0) && (x27:0 >= x26:0 && x27:0 > -1 && x28:0 <= x24:0 && x28:0 > 0 && x24:0 > 0 && cons_0 = 0) f197_0_main_GT(x8:0, x9:0, x10:0, x11:0) -> f197_0_main_GT(x4:0, c3, c4, x11:0) :|: c4 = 0 && c3 = x9:0 + 1 && (x9:0 + 1 <= x11:0 && x11:0 <= x10:0 - 1 && x11:0 > -1 && x8:0 >= x12:0 && x4:0 <= x12:0 && x8:0 > 0 && x4:0 > 0 && x12:0 > 0) f197_0_main_GT(x, x1, c5, x3) -> f197_0_main_GT(x4, x1, c6, x3) :|: c6 = 1 && c5 = 0 && (x3 > -1 && x3 >= x1 && x4 <= x && x4 > 0 && x > 0 && x2 = 0) f197_0_main_GT(x49:0, x51:0, x52:0, x53:0) -> f197_0_main_GT(x54:0, x51:0, c7, x53:0) :|: c7 = x52:0 + 1 && (x53:0 >= x52:0 && x53:0 >= x51:0 && x53:0 > -1 && x54:0 <= x49:0 && x54:0 > 0 && x49:0 > 0) ---------------------------------------- (10) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f197_0_main_GT(x, x1, x2, x3)] = -x1 + x3 The following rules are decreasing: f197_0_main_GT(x8:0, x9:0, x10:0, x11:0) -> f197_0_main_GT(x4:0, c3, c4, x11:0) :|: c4 = 0 && c3 = x9:0 + 1 && (x9:0 + 1 <= x11:0 && x11:0 <= x10:0 - 1 && x11:0 > -1 && x8:0 >= x12:0 && x4:0 <= x12:0 && x8:0 > 0 && x4:0 > 0 && x12:0 > 0) The following rules are bounded: f197_0_main_GT(x24:0, c, x26:0, x27:0) -> f197_0_main_GT(x28:0, c1, c2, x27:0) :|: c2 = x26:0 + 1 && (c1 = 0 && c = 0) && (x27:0 >= x26:0 && x27:0 > -1 && x28:0 <= x24:0 && x28:0 > 0 && x24:0 > 0 && cons_0 = 0) f197_0_main_GT(x8:0, x9:0, x10:0, x11:0) -> f197_0_main_GT(x4:0, c3, c4, x11:0) :|: c4 = 0 && c3 = x9:0 + 1 && (x9:0 + 1 <= x11:0 && x11:0 <= x10:0 - 1 && x11:0 > -1 && x8:0 >= x12:0 && x4:0 <= x12:0 && x8:0 > 0 && x4:0 > 0 && x12:0 > 0) f197_0_main_GT(x, x1, c5, x3) -> f197_0_main_GT(x4, x1, c6, x3) :|: c6 = 1 && c5 = 0 && (x3 > -1 && x3 >= x1 && x4 <= x && x4 > 0 && x > 0 && x2 = 0) f197_0_main_GT(x49:0, x51:0, x52:0, x53:0) -> f197_0_main_GT(x54:0, x51:0, c7, x53:0) :|: c7 = x52:0 + 1 && (x53:0 >= x52:0 && x53:0 >= x51:0 && x53:0 > -1 && x54:0 <= x49:0 && x54:0 > 0 && x49:0 > 0) ---------------------------------------- (11) Obligation: Rules: f197_0_main_GT(x24:0, c, x26:0, x27:0) -> f197_0_main_GT(x28:0, c1, c2, x27:0) :|: c2 = x26:0 + 1 && (c1 = 0 && c = 0) && (x27:0 >= x26:0 && x27:0 > -1 && x28:0 <= x24:0 && x28:0 > 0 && x24:0 > 0 && cons_0 = 0) f197_0_main_GT(x, x1, c5, x3) -> f197_0_main_GT(x4, x1, c6, x3) :|: c6 = 1 && c5 = 0 && (x3 > -1 && x3 >= x1 && x4 <= x && x4 > 0 && x > 0 && x2 = 0) f197_0_main_GT(x49:0, x51:0, x52:0, x53:0) -> f197_0_main_GT(x54:0, x51:0, c7, x53:0) :|: c7 = x52:0 + 1 && (x53:0 >= x52:0 && x53:0 >= x51:0 && x53:0 > -1 && x54:0 <= x49:0 && x54:0 > 0 && x49:0 > 0) ---------------------------------------- (12) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f197_0_main_GT(x, x1, x2, x3)] = -x2 + x3 The following rules are decreasing: f197_0_main_GT(x24:0, c, x26:0, x27:0) -> f197_0_main_GT(x28:0, c1, c2, x27:0) :|: c2 = x26:0 + 1 && (c1 = 0 && c = 0) && (x27:0 >= x26:0 && x27:0 > -1 && x28:0 <= x24:0 && x28:0 > 0 && x24:0 > 0 && cons_0 = 0) f197_0_main_GT(x, x1, c5, x3) -> f197_0_main_GT(x4, x1, c6, x3) :|: c6 = 1 && c5 = 0 && (x3 > -1 && x3 >= x1 && x4 <= x && x4 > 0 && x > 0 && x2 = 0) f197_0_main_GT(x49:0, x51:0, x52:0, x53:0) -> f197_0_main_GT(x54:0, x51:0, c7, x53:0) :|: c7 = x52:0 + 1 && (x53:0 >= x52:0 && x53:0 >= x51:0 && x53:0 > -1 && x54:0 <= x49:0 && x54:0 > 0 && x49:0 > 0) The following rules are bounded: f197_0_main_GT(x24:0, c, x26:0, x27:0) -> f197_0_main_GT(x28:0, c1, c2, x27:0) :|: c2 = x26:0 + 1 && (c1 = 0 && c = 0) && (x27:0 >= x26:0 && x27:0 > -1 && x28:0 <= x24:0 && x28:0 > 0 && x24:0 > 0 && cons_0 = 0) f197_0_main_GT(x, x1, c5, x3) -> f197_0_main_GT(x4, x1, c6, x3) :|: c6 = 1 && c5 = 0 && (x3 > -1 && x3 >= x1 && x4 <= x && x4 > 0 && x > 0 && x2 = 0) f197_0_main_GT(x49:0, x51:0, x52:0, x53:0) -> f197_0_main_GT(x54:0, x51:0, c7, x53:0) :|: c7 = x52:0 + 1 && (x53:0 >= x52:0 && x53:0 >= x51:0 && x53:0 > -1 && x54:0 <= x49:0 && x54:0 > 0 && x49:0 > 0) ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f216_0_parts_GT(x58, x59, x60, x61) -> f216_0_parts_GT(x62, x63, x64, x65) :|: x59 = x63 && x59 = x62 && 1 <= x58 - 1 && x59 <= x58 - 1 && 0 <= x59 - 1 (2) f216_0_parts_GT(x66, x67, x68, x69) -> f216_0_parts_GT(x70, x71, x72, x73) :|: x67 - x66 = x71 && x66 = x70 && 0 <= x66 - 1 && x66 <= x67 && 0 <= x67 - 1 (3) f409_0_parts_InvokeMethod(x98, x99, x100, x101) -> f216_0_parts_GT(x102, x103, x104, x105) :|: 0 <= x99 - 1 && 0 <= x98 - 1 && 0 <= x106 - 1 && x100 <= x98 - 1 && x100 = x102 && x99 = x103 (4) f216_0_parts_GT(x90, x91, x92, x93) -> f409_0_parts_InvokeMethod(x94, x95, x96, x97) :|: x90 - 1 = x96 && x91 = x95 && x90 = x94 && 0 <= x90 - 1 && x90 <= x91 && 0 <= x91 - 1 (5) f216_0_parts_GT(x107, x108, x109, x110) -> f216_0_parts_GT(x111, x112, x113, x114) :|: 0 <= x108 - 1 && 1 <= x107 - 1 && x107 <= x108 && x107 - 1 <= x107 - 1 && 0 <= x115 - 1 && x107 - 1 = x111 && x108 = x112 (6) f216_0_parts_GT(x74, x75, x76, x77) -> f409_0_parts_InvokeMethod(x78, x79, x80, x81) :|: x74 - 1 = x80 && x75 = x79 && x74 = x78 && x74 <= x75 && x75 - x74 = 0 && 0 <= x74 - 1 && 0 <= x75 - 1 Arcs: (1) -> (2), (4), (5), (6) (2) -> (1), (2), (4), (5), (6) (3) -> (1), (2), (4), (5), (6) (4) -> (3) (5) -> (2), (4), (5) (6) -> (3) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f216_0_parts_GT(x74:0, x103:0, x76:0, x77:0) -> f216_0_parts_GT(x74:0 - 1, x103:0, x104:0, x105:0) :|: x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0 f216_0_parts_GT(x58:0, x59:0, x60:0, x61:0) -> f216_0_parts_GT(x59:0, x59:0, x64:0, x65:0) :|: x59:0 <= x58:0 - 1 && x58:0 > 1 && x59:0 > 0 f216_0_parts_GT(x107:0, x108:0, x109:0, x110:0) -> f216_0_parts_GT(x107:0 - 1, x108:0, x113:0, x114:0) :|: x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0 f216_0_parts_GT(x66:0, x67:0, x68:0, x69:0) -> f216_0_parts_GT(x66:0, x67:0 - x66:0, x72:0, x73:0) :|: x67:0 >= x66:0 && x66:0 > 0 && x67:0 > 0 f216_0_parts_GT(x, x1, x2, x3) -> f216_0_parts_GT(x - 1, x1, x4, x5) :|: x <= x1 && x6 > 0 && x > 0 && x1 > 0 ---------------------------------------- (17) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f216_0_parts_GT(x1, x2, x3, x4) -> f216_0_parts_GT(x1, x2) ---------------------------------------- (18) Obligation: Rules: f216_0_parts_GT(x74:0, x103:0) -> f216_0_parts_GT(x74:0 - 1, x103:0) :|: x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0 f216_0_parts_GT(x58:0, x59:0) -> f216_0_parts_GT(x59:0, x59:0) :|: x59:0 <= x58:0 - 1 && x58:0 > 1 && x59:0 > 0 f216_0_parts_GT(x107:0, x108:0) -> f216_0_parts_GT(x107:0 - 1, x108:0) :|: x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0 f216_0_parts_GT(x66:0, x67:0) -> f216_0_parts_GT(x66:0, x67:0 - x66:0) :|: x67:0 >= x66:0 && x66:0 > 0 && x67:0 > 0 f216_0_parts_GT(x, x1) -> f216_0_parts_GT(x - 1, x1) :|: x <= x1 && x6 > 0 && x > 0 && x1 > 0 ---------------------------------------- (19) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f216_0_parts_GT(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (20) Obligation: Rules: f216_0_parts_GT(x74:0, x103:0) -> f216_0_parts_GT(c, x103:0) :|: c = x74:0 - 1 && (x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0) f216_0_parts_GT(x58:0, x59:0) -> f216_0_parts_GT(x59:0, x59:0) :|: x59:0 <= x58:0 - 1 && x58:0 > 1 && x59:0 > 0 f216_0_parts_GT(x107:0, x108:0) -> f216_0_parts_GT(c1, x108:0) :|: c1 = x107:0 - 1 && (x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0) f216_0_parts_GT(x66:0, x67:0) -> f216_0_parts_GT(x66:0, c2) :|: c2 = x67:0 - x66:0 && (x67:0 >= x66:0 && x66:0 > 0 && x67:0 > 0) f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) ---------------------------------------- (21) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f216_0_parts_GT(x, x1)] = x1 The following rules are decreasing: f216_0_parts_GT(x66:0, x67:0) -> f216_0_parts_GT(x66:0, c2) :|: c2 = x67:0 - x66:0 && (x67:0 >= x66:0 && x66:0 > 0 && x67:0 > 0) The following rules are bounded: f216_0_parts_GT(x74:0, x103:0) -> f216_0_parts_GT(c, x103:0) :|: c = x74:0 - 1 && (x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0) f216_0_parts_GT(x107:0, x108:0) -> f216_0_parts_GT(c1, x108:0) :|: c1 = x107:0 - 1 && (x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0) f216_0_parts_GT(x66:0, x67:0) -> f216_0_parts_GT(x66:0, c2) :|: c2 = x67:0 - x66:0 && (x67:0 >= x66:0 && x66:0 > 0 && x67:0 > 0) f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) ---------------------------------------- (22) Obligation: Rules: f216_0_parts_GT(x74:0, x103:0) -> f216_0_parts_GT(c, x103:0) :|: c = x74:0 - 1 && (x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0) f216_0_parts_GT(x58:0, x59:0) -> f216_0_parts_GT(x59:0, x59:0) :|: x59:0 <= x58:0 - 1 && x58:0 > 1 && x59:0 > 0 f216_0_parts_GT(x107:0, x108:0) -> f216_0_parts_GT(c1, x108:0) :|: c1 = x107:0 - 1 && (x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0) f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f216_0_parts_GT(x, x1)] = x The following rules are decreasing: f216_0_parts_GT(x74:0, x103:0) -> f216_0_parts_GT(c, x103:0) :|: c = x74:0 - 1 && (x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0) f216_0_parts_GT(x58:0, x59:0) -> f216_0_parts_GT(x59:0, x59:0) :|: x59:0 <= x58:0 - 1 && x58:0 > 1 && x59:0 > 0 f216_0_parts_GT(x107:0, x108:0) -> f216_0_parts_GT(c1, x108:0) :|: c1 = x107:0 - 1 && (x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0) f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) The following rules are bounded: f216_0_parts_GT(x74:0, x103:0) -> f216_0_parts_GT(c, x103:0) :|: c = x74:0 - 1 && (x103:0 - x74:0 = 0 && x74:0 <= x103:0 && x106:0 > 0 && x74:0 > 0 && x103:0 > 0) f216_0_parts_GT(x58:0, x59:0) -> f216_0_parts_GT(x59:0, x59:0) :|: x59:0 <= x58:0 - 1 && x58:0 > 1 && x59:0 > 0 f216_0_parts_GT(x107:0, x108:0) -> f216_0_parts_GT(c1, x108:0) :|: c1 = x107:0 - 1 && (x108:0 >= x107:0 && x115:0 > 0 && x107:0 > 1 && x108:0 > 0) ---------------------------------------- (24) Obligation: Rules: f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) ---------------------------------------- (25) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f216_0_parts_GT ] = f216_0_parts_GT_1 The following rules are decreasing: f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) The following rules are bounded: f216_0_parts_GT(x, x1) -> f216_0_parts_GT(c3, x1) :|: c3 = x - 1 && (x <= x1 && x6 > 0 && x > 0 && x1 > 0) ---------------------------------------- (26) YES