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, 1079 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IRSwT (8) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (9) IRSwT (10) TempFilterProof [SOUND, 7 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 1 ms] (13) YES (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (18) IRSwT (19) TempFilterProof [SOUND, 20 ms] (20) IntTRS (21) RankingReductionPairProof [EQUIVALENT, 8 ms] (22) YES (23) IRSwT (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] (25) IRSwT (26) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (27) IRSwT (28) TempFilterProof [SOUND, 10 ms] (29) IntTRS (30) PolynomialOrderProcessor [EQUIVALENT, 1 ms] (31) YES (32) IRSwT (33) IntTRSCompressionProof [EQUIVALENT, 0 ms] (34) IRSwT (35) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (36) IRSwT (37) TempFilterProof [SOUND, 12 ms] (38) IntTRS (39) RankingReductionPairProof [EQUIVALENT, 3 ms] (40) YES (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 15 ms] (45) IntTRS (46) RankingReductionPairProof [EQUIVALENT, 2 ms] (47) YES (48) IRSwT (49) IntTRSCompressionProof [EQUIVALENT, 0 ms] (50) IRSwT (51) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (52) IRSwT (53) TempFilterProof [SOUND, 15 ms] (54) IntTRS (55) RankingReductionPairProof [EQUIVALENT, 6 ms] (56) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4, arg5) -> f500_0_main_GE(arg1P, arg2P, arg3P, arg4P, arg5P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f500_0_main_GE(x, x1, x2, x3, x4) -> f500_0_main_GE(x5, x6, x7, x8, x9) :|: x2 = x7 && x1 + 1 = x6 && 0 <= x5 - 1 && 0 <= x - 1 && x5 <= x && 0 <= x2 - 1 && x1 <= x2 - 1 f500_0_main_GE(x10, x11, x12, x13, x14) -> f323_0_rec0_GT(x15, x16, x17, x18, x19) :|: x12 = x16 && 0 = x15 && 0 <= x10 - 1 && 0 <= x12 - 1 && x11 <= x12 - 1 f323_0_rec0_GT(x20, x21, x22, x23, x24) -> f323_0_rec0_GT(x25, x26, x27, x28, x29) :|: x21 = x26 && x20 + 1 = x25 && 0 <= x21 - 1 && -1 <= x20 - 1 && x20 <= x21 f323_0_rec0_GT(x30, x31, x32, x33, x34) -> f376_0_rec1_GT(x35, x36, x37, x38, x39) :|: 2 * x30 = x37 && 0 = x36 && x30 = x35 && x30 <= x31 && 0 <= x31 - 1 f376_0_rec1_GT(x40, x41, x42, x43, x44) -> f376_0_rec1_GT(x45, x46, x47, x48, x49) :|: x42 = x47 && x41 + 1 = x46 && x40 = x45 && -1 <= x41 - 1 && x41 <= x42 && -1 <= x40 - 1 f376_0_rec1_GT(x50, x51, x52, x53, x54) -> f319_0_rec2_LT(x55, x56, x57, x58, x59) :|: x50 + x51 = x57 && x51 = x56 && x50 = x55 && -1 <= x51 - 1 && x51 <= x52 && -1 <= x50 - 1 f319_0_rec2_LT(x60, x61, x62, x63, x64) -> f319_0_rec2_LT(x65, x66, x67, x68, x69) :|: x62 - 1 = x67 && x61 = x66 && x60 = x65 && 0 <= 4 * x62 && 0 <= 2 * x60 + 3 * x61 && 0 <= 2 * x60 && -1 <= x62 - 1 && 0 <= 3 * x61 f319_0_rec2_LT(x70, x71, x72, x73, x74) -> f541_0_rec3_GT(x75, x76, x77, x78, x79) :|: 2 * x70 + 3 * x71 + 4 * x72 = x79 && 0 = x78 && x72 = x77 && x71 = x76 && x70 = x75 && 0 <= 4 * x72 && 0 <= 2 * x70 + 3 * x71 && 0 <= 2 * x70 && -1 <= x72 - 1 && 0 <= 3 * x71 f541_0_rec3_GT(x80, x81, x82, x83, x84) -> f541_0_rec3_GT(x85, x86, x87, x88, x89) :|: x84 = x89 && x83 + 1 = x88 && x82 = x87 && x81 = x86 && x80 = x85 && -1 <= x83 - 1 && 0 <= 1000 * x80 + 100 * x81 + 10 * x82 && -1 <= x82 - 1 && 0 <= 1000 * x80 + 100 * x81 && 0 <= 10 * x82 && 0 <= 1000 * x80 && x83 <= x84 && 0 <= 100 * x81 f541_0_rec3_GT(x90, x91, x92, x93, x94) -> f493_0_rec4_LT(x95, x96, x97, x98, x99) :|: 1000 * x90 + 100 * x91 + 10 * x92 + x93 = x95 && 0 <= 1000 * x90 + 100 * x91 + 10 * x92 && -1 <= x93 - 1 && -1 <= x92 - 1 && 0 <= 1000 * x90 + 100 * x91 && 0 <= 10 * x92 && 0 <= 1000 * x90 && x93 <= x94 && 0 <= 100 * x91 f493_0_rec4_LT(x100, x101, x102, x103, x104) -> f493_0_rec4_LT(x105, x106, x107, x108, x109) :|: x100 - 1 = x105 && -1 <= x100 - 1 __init(x110, x111, x112, x113, x114) -> f1_0_main_ConstantStackPush(x115, x116, x117, x118, x119) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3, arg4, arg5) ---------------------------------------- (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, arg5) -> f500_0_main_GE(arg1P, arg2P, arg3P, arg4P, arg5P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f500_0_main_GE(x, x1, x2, x3, x4) -> f500_0_main_GE(x5, x6, x7, x8, x9) :|: x2 = x7 && x1 + 1 = x6 && 0 <= x5 - 1 && 0 <= x - 1 && x5 <= x && 0 <= x2 - 1 && x1 <= x2 - 1 f500_0_main_GE(x10, x11, x12, x13, x14) -> f323_0_rec0_GT(x15, x16, x17, x18, x19) :|: x12 = x16 && 0 = x15 && 0 <= x10 - 1 && 0 <= x12 - 1 && x11 <= x12 - 1 f323_0_rec0_GT(x20, x21, x22, x23, x24) -> f323_0_rec0_GT(x25, x26, x27, x28, x29) :|: x21 = x26 && x20 + 1 = x25 && 0 <= x21 - 1 && -1 <= x20 - 1 && x20 <= x21 f323_0_rec0_GT(x30, x31, x32, x33, x34) -> f376_0_rec1_GT(x35, x36, x37, x38, x39) :|: 2 * x30 = x37 && 0 = x36 && x30 = x35 && x30 <= x31 && 0 <= x31 - 1 f376_0_rec1_GT(x40, x41, x42, x43, x44) -> f376_0_rec1_GT(x45, x46, x47, x48, x49) :|: x42 = x47 && x41 + 1 = x46 && x40 = x45 && -1 <= x41 - 1 && x41 <= x42 && -1 <= x40 - 1 f376_0_rec1_GT(x50, x51, x52, x53, x54) -> f319_0_rec2_LT(x55, x56, x57, x58, x59) :|: x50 + x51 = x57 && x51 = x56 && x50 = x55 && -1 <= x51 - 1 && x51 <= x52 && -1 <= x50 - 1 f319_0_rec2_LT(x60, x61, x62, x63, x64) -> f319_0_rec2_LT(x65, x66, x67, x68, x69) :|: x62 - 1 = x67 && x61 = x66 && x60 = x65 && 0 <= 4 * x62 && 0 <= 2 * x60 + 3 * x61 && 0 <= 2 * x60 && -1 <= x62 - 1 && 0 <= 3 * x61 f319_0_rec2_LT(x70, x71, x72, x73, x74) -> f541_0_rec3_GT(x75, x76, x77, x78, x79) :|: 2 * x70 + 3 * x71 + 4 * x72 = x79 && 0 = x78 && x72 = x77 && x71 = x76 && x70 = x75 && 0 <= 4 * x72 && 0 <= 2 * x70 + 3 * x71 && 0 <= 2 * x70 && -1 <= x72 - 1 && 0 <= 3 * x71 f541_0_rec3_GT(x80, x81, x82, x83, x84) -> f541_0_rec3_GT(x85, x86, x87, x88, x89) :|: x84 = x89 && x83 + 1 = x88 && x82 = x87 && x81 = x86 && x80 = x85 && -1 <= x83 - 1 && 0 <= 1000 * x80 + 100 * x81 + 10 * x82 && -1 <= x82 - 1 && 0 <= 1000 * x80 + 100 * x81 && 0 <= 10 * x82 && 0 <= 1000 * x80 && x83 <= x84 && 0 <= 100 * x81 f541_0_rec3_GT(x90, x91, x92, x93, x94) -> f493_0_rec4_LT(x95, x96, x97, x98, x99) :|: 1000 * x90 + 100 * x91 + 10 * x92 + x93 = x95 && 0 <= 1000 * x90 + 100 * x91 + 10 * x92 && -1 <= x93 - 1 && -1 <= x92 - 1 && 0 <= 1000 * x90 + 100 * x91 && 0 <= 10 * x92 && 0 <= 1000 * x90 && x93 <= x94 && 0 <= 100 * x91 f493_0_rec4_LT(x100, x101, x102, x103, x104) -> f493_0_rec4_LT(x105, x106, x107, x108, x109) :|: x100 - 1 = x105 && -1 <= x100 - 1 __init(x110, x111, x112, x113, x114) -> f1_0_main_ConstantStackPush(x115, x116, x117, x118, x119) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3, arg4, arg5) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4, arg5) -> f500_0_main_GE(arg1P, arg2P, arg3P, arg4P, arg5P) :|: arg2 = arg3P && 0 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 (2) f500_0_main_GE(x, x1, x2, x3, x4) -> f500_0_main_GE(x5, x6, x7, x8, x9) :|: x2 = x7 && x1 + 1 = x6 && 0 <= x5 - 1 && 0 <= x - 1 && x5 <= x && 0 <= x2 - 1 && x1 <= x2 - 1 (3) f500_0_main_GE(x10, x11, x12, x13, x14) -> f323_0_rec0_GT(x15, x16, x17, x18, x19) :|: x12 = x16 && 0 = x15 && 0 <= x10 - 1 && 0 <= x12 - 1 && x11 <= x12 - 1 (4) f323_0_rec0_GT(x20, x21, x22, x23, x24) -> f323_0_rec0_GT(x25, x26, x27, x28, x29) :|: x21 = x26 && x20 + 1 = x25 && 0 <= x21 - 1 && -1 <= x20 - 1 && x20 <= x21 (5) f323_0_rec0_GT(x30, x31, x32, x33, x34) -> f376_0_rec1_GT(x35, x36, x37, x38, x39) :|: 2 * x30 = x37 && 0 = x36 && x30 = x35 && x30 <= x31 && 0 <= x31 - 1 (6) f376_0_rec1_GT(x40, x41, x42, x43, x44) -> f376_0_rec1_GT(x45, x46, x47, x48, x49) :|: x42 = x47 && x41 + 1 = x46 && x40 = x45 && -1 <= x41 - 1 && x41 <= x42 && -1 <= x40 - 1 (7) f376_0_rec1_GT(x50, x51, x52, x53, x54) -> f319_0_rec2_LT(x55, x56, x57, x58, x59) :|: x50 + x51 = x57 && x51 = x56 && x50 = x55 && -1 <= x51 - 1 && x51 <= x52 && -1 <= x50 - 1 (8) f319_0_rec2_LT(x60, x61, x62, x63, x64) -> f319_0_rec2_LT(x65, x66, x67, x68, x69) :|: x62 - 1 = x67 && x61 = x66 && x60 = x65 && 0 <= 4 * x62 && 0 <= 2 * x60 + 3 * x61 && 0 <= 2 * x60 && -1 <= x62 - 1 && 0 <= 3 * x61 (9) f319_0_rec2_LT(x70, x71, x72, x73, x74) -> f541_0_rec3_GT(x75, x76, x77, x78, x79) :|: 2 * x70 + 3 * x71 + 4 * x72 = x79 && 0 = x78 && x72 = x77 && x71 = x76 && x70 = x75 && 0 <= 4 * x72 && 0 <= 2 * x70 + 3 * x71 && 0 <= 2 * x70 && -1 <= x72 - 1 && 0 <= 3 * x71 (10) f541_0_rec3_GT(x80, x81, x82, x83, x84) -> f541_0_rec3_GT(x85, x86, x87, x88, x89) :|: x84 = x89 && x83 + 1 = x88 && x82 = x87 && x81 = x86 && x80 = x85 && -1 <= x83 - 1 && 0 <= 1000 * x80 + 100 * x81 + 10 * x82 && -1 <= x82 - 1 && 0 <= 1000 * x80 + 100 * x81 && 0 <= 10 * x82 && 0 <= 1000 * x80 && x83 <= x84 && 0 <= 100 * x81 (11) f541_0_rec3_GT(x90, x91, x92, x93, x94) -> f493_0_rec4_LT(x95, x96, x97, x98, x99) :|: 1000 * x90 + 100 * x91 + 10 * x92 + x93 = x95 && 0 <= 1000 * x90 + 100 * x91 + 10 * x92 && -1 <= x93 - 1 && -1 <= x92 - 1 && 0 <= 1000 * x90 + 100 * x91 && 0 <= 10 * x92 && 0 <= 1000 * x90 && x93 <= x94 && 0 <= 100 * x91 (12) f493_0_rec4_LT(x100, x101, x102, x103, x104) -> f493_0_rec4_LT(x105, x106, x107, x108, x109) :|: x100 - 1 = x105 && -1 <= x100 - 1 (13) __init(x110, x111, x112, x113, x114) -> f1_0_main_ConstantStackPush(x115, x116, x117, x118, x119) :|: 0 <= 0 Arcs: (1) -> (2), (3) (2) -> (2), (3) (3) -> (4), (5) (4) -> (4), (5) (5) -> (6), (7) (6) -> (6), (7) (7) -> (8), (9) (8) -> (8), (9) (9) -> (10), (11) (10) -> (10), (11) (11) -> (12) (12) -> (12) (13) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) f500_0_main_GE(x, x1, x2, x3, x4) -> f500_0_main_GE(x5, x6, x7, x8, x9) :|: x2 = x7 && x1 + 1 = x6 && 0 <= x5 - 1 && 0 <= x - 1 && x5 <= x && 0 <= x2 - 1 && x1 <= x2 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f500_0_main_GE(x:0, x1:0, x2:0, x3:0, x4:0) -> f500_0_main_GE(x5:0, x1:0 + 1, x2:0, x8:0, x9:0) :|: x2:0 > 0 && x2:0 - 1 >= x1:0 && x:0 >= x5:0 && x5:0 > 0 && x:0 > 0 ---------------------------------------- (8) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f500_0_main_GE(x1, x2, x3, x4, x5) -> f500_0_main_GE(x1, x2, x3) ---------------------------------------- (9) Obligation: Rules: f500_0_main_GE(x:0, x1:0, x2:0) -> f500_0_main_GE(x5:0, x1:0 + 1, x2:0) :|: x2:0 > 0 && x2:0 - 1 >= x1:0 && x:0 >= x5:0 && x5:0 > 0 && x:0 > 0 ---------------------------------------- (10) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f500_0_main_GE(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (11) Obligation: Rules: f500_0_main_GE(x:0, x1:0, x2:0) -> f500_0_main_GE(x5:0, c, x2:0) :|: c = x1:0 + 1 && (x2:0 > 0 && x2:0 - 1 >= x1:0 && x:0 >= x5:0 && x5:0 > 0 && x:0 > 0) ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f500_0_main_GE ] = f500_0_main_GE_3 + -1*f500_0_main_GE_2 The following rules are decreasing: f500_0_main_GE(x:0, x1:0, x2:0) -> f500_0_main_GE(x5:0, c, x2:0) :|: c = x1:0 + 1 && (x2:0 > 0 && x2:0 - 1 >= x1:0 && x:0 >= x5:0 && x5:0 > 0 && x:0 > 0) The following rules are bounded: f500_0_main_GE(x:0, x1:0, x2:0) -> f500_0_main_GE(x5:0, c, x2:0) :|: c = x1:0 + 1 && (x2:0 > 0 && x2:0 - 1 >= x1:0 && x:0 >= x5:0 && x5:0 > 0 && x:0 > 0) ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f323_0_rec0_GT(x20, x21, x22, x23, x24) -> f323_0_rec0_GT(x25, x26, x27, x28, x29) :|: x21 = x26 && x20 + 1 = x25 && 0 <= x21 - 1 && -1 <= x20 - 1 && x20 <= x21 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f323_0_rec0_GT(x20:0, x21:0, x22:0, x23:0, x24:0) -> f323_0_rec0_GT(x20:0 + 1, x21:0, x27:0, x28:0, x29:0) :|: x20:0 > -1 && x21:0 > 0 && x21:0 >= x20:0 ---------------------------------------- (17) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f323_0_rec0_GT(x1, x2, x3, x4, x5) -> f323_0_rec0_GT(x1, x2) ---------------------------------------- (18) Obligation: Rules: f323_0_rec0_GT(x20:0, x21:0) -> f323_0_rec0_GT(x20:0 + 1, x21:0) :|: x20:0 > -1 && x21:0 > 0 && x21:0 >= x20:0 ---------------------------------------- (19) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f323_0_rec0_GT(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (20) Obligation: Rules: f323_0_rec0_GT(x20:0, x21:0) -> f323_0_rec0_GT(c, x21:0) :|: c = x20:0 + 1 && (x20:0 > -1 && x21:0 > 0 && x21:0 >= x20:0) ---------------------------------------- (21) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f323_0_rec0_GT ] = -1*f323_0_rec0_GT_1 + f323_0_rec0_GT_2 The following rules are decreasing: f323_0_rec0_GT(x20:0, x21:0) -> f323_0_rec0_GT(c, x21:0) :|: c = x20:0 + 1 && (x20:0 > -1 && x21:0 > 0 && x21:0 >= x20:0) The following rules are bounded: f323_0_rec0_GT(x20:0, x21:0) -> f323_0_rec0_GT(c, x21:0) :|: c = x20:0 + 1 && (x20:0 > -1 && x21:0 > 0 && x21:0 >= x20:0) ---------------------------------------- (22) YES ---------------------------------------- (23) Obligation: Termination digraph: Nodes: (1) f376_0_rec1_GT(x40, x41, x42, x43, x44) -> f376_0_rec1_GT(x45, x46, x47, x48, x49) :|: x42 = x47 && x41 + 1 = x46 && x40 = x45 && -1 <= x41 - 1 && x41 <= x42 && -1 <= x40 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f376_0_rec1_GT(x40:0, x41:0, x42:0, x43:0, x44:0) -> f376_0_rec1_GT(x40:0, x41:0 + 1, x42:0, x48:0, x49:0) :|: x42:0 >= x41:0 && x41:0 > -1 && x40:0 > -1 ---------------------------------------- (26) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f376_0_rec1_GT(x1, x2, x3, x4, x5) -> f376_0_rec1_GT(x1, x2, x3) ---------------------------------------- (27) Obligation: Rules: f376_0_rec1_GT(x40:0, x41:0, x42:0) -> f376_0_rec1_GT(x40:0, x41:0 + 1, x42:0) :|: x42:0 >= x41:0 && x41:0 > -1 && x40:0 > -1 ---------------------------------------- (28) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f376_0_rec1_GT(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (29) Obligation: Rules: f376_0_rec1_GT(x40:0, x41:0, x42:0) -> f376_0_rec1_GT(x40:0, c, x42:0) :|: c = x41:0 + 1 && (x42:0 >= x41:0 && x41:0 > -1 && x40:0 > -1) ---------------------------------------- (30) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f376_0_rec1_GT(x, x1, x2)] = -x1 + x2 The following rules are decreasing: f376_0_rec1_GT(x40:0, x41:0, x42:0) -> f376_0_rec1_GT(x40:0, c, x42:0) :|: c = x41:0 + 1 && (x42:0 >= x41:0 && x41:0 > -1 && x40:0 > -1) The following rules are bounded: f376_0_rec1_GT(x40:0, x41:0, x42:0) -> f376_0_rec1_GT(x40:0, c, x42:0) :|: c = x41:0 + 1 && (x42:0 >= x41:0 && x41:0 > -1 && x40:0 > -1) ---------------------------------------- (31) YES ---------------------------------------- (32) Obligation: Termination digraph: Nodes: (1) f319_0_rec2_LT(x60, x61, x62, x63, x64) -> f319_0_rec2_LT(x65, x66, x67, x68, x69) :|: x62 - 1 = x67 && x61 = x66 && x60 = x65 && 0 <= 4 * x62 && 0 <= 2 * x60 + 3 * x61 && 0 <= 2 * x60 && -1 <= x62 - 1 && 0 <= 3 * x61 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (33) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (34) Obligation: Rules: f319_0_rec2_LT(x60:0, x61:0, x62:0, x63:0, x64:0) -> f319_0_rec2_LT(x60:0, x61:0, x62:0 - 1, x68:0, x69:0) :|: x62:0 > -1 && 3 * x61:0 >= 0 && 2 * x60:0 >= 0 && 4 * x62:0 >= 0 && 2 * x60:0 + 3 * x61:0 >= 0 ---------------------------------------- (35) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f319_0_rec2_LT(x1, x2, x3, x4, x5) -> f319_0_rec2_LT(x1, x2, x3) ---------------------------------------- (36) Obligation: Rules: f319_0_rec2_LT(x60:0, x61:0, x62:0) -> f319_0_rec2_LT(x60:0, x61:0, x62:0 - 1) :|: x62:0 > -1 && 3 * x61:0 >= 0 && 2 * x60:0 >= 0 && 4 * x62:0 >= 0 && 2 * x60:0 + 3 * x61:0 >= 0 ---------------------------------------- (37) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f319_0_rec2_LT(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (38) Obligation: Rules: f319_0_rec2_LT(x60:0, x61:0, x62:0) -> f319_0_rec2_LT(x60:0, x61:0, c) :|: c = x62:0 - 1 && (x62:0 > -1 && 3 * x61:0 >= 0 && 2 * x60:0 >= 0 && 4 * x62:0 >= 0 && 2 * x60:0 + 3 * x61:0 >= 0) ---------------------------------------- (39) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f319_0_rec2_LT ] = f319_0_rec2_LT_3 The following rules are decreasing: f319_0_rec2_LT(x60:0, x61:0, x62:0) -> f319_0_rec2_LT(x60:0, x61:0, c) :|: c = x62:0 - 1 && (x62:0 > -1 && 3 * x61:0 >= 0 && 2 * x60:0 >= 0 && 4 * x62:0 >= 0 && 2 * x60:0 + 3 * x61:0 >= 0) The following rules are bounded: f319_0_rec2_LT(x60:0, x61:0, x62:0) -> f319_0_rec2_LT(x60:0, x61:0, c) :|: c = x62:0 - 1 && (x62:0 > -1 && 3 * x61:0 >= 0 && 2 * x60:0 >= 0 && 4 * x62:0 >= 0 && 2 * x60:0 + 3 * x61:0 >= 0) ---------------------------------------- (40) YES ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f541_0_rec3_GT(x80, x81, x82, x83, x84) -> f541_0_rec3_GT(x85, x86, x87, x88, x89) :|: x84 = x89 && x83 + 1 = x88 && x82 = x87 && x81 = x86 && x80 = x85 && -1 <= x83 - 1 && 0 <= 1000 * x80 + 100 * x81 + 10 * x82 && -1 <= x82 - 1 && 0 <= 1000 * x80 + 100 * x81 && 0 <= 10 * x82 && 0 <= 1000 * x80 && x83 <= x84 && 0 <= 100 * x81 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f541_0_rec3_GT(x80:0, x81:0, x82:0, x83:0, x84:0) -> f541_0_rec3_GT(x80:0, x81:0, x82:0, x83:0 + 1, x84:0) :|: x84:0 >= x83:0 && 100 * x81:0 >= 0 && 1000 * x80:0 >= 0 && 10 * x82:0 >= 0 && 1000 * x80:0 + 100 * x81:0 >= 0 && x82:0 > -1 && x83:0 > -1 && 1000 * x80:0 + 100 * x81:0 + 10 * x82:0 >= 0 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f541_0_rec3_GT(INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f541_0_rec3_GT(x80:0, x81:0, x82:0, x83:0, x84:0) -> f541_0_rec3_GT(x80:0, x81:0, x82:0, c, x84:0) :|: c = x83:0 + 1 && (x84:0 >= x83:0 && 100 * x81:0 >= 0 && 1000 * x80:0 >= 0 && 10 * x82:0 >= 0 && 1000 * x80:0 + 100 * x81:0 >= 0 && x82:0 > -1 && x83:0 > -1 && 1000 * x80:0 + 100 * x81:0 + 10 * x82:0 >= 0) ---------------------------------------- (46) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f541_0_rec3_GT ] = f541_0_rec3_GT_5 + -1*f541_0_rec3_GT_4 The following rules are decreasing: f541_0_rec3_GT(x80:0, x81:0, x82:0, x83:0, x84:0) -> f541_0_rec3_GT(x80:0, x81:0, x82:0, c, x84:0) :|: c = x83:0 + 1 && (x84:0 >= x83:0 && 100 * x81:0 >= 0 && 1000 * x80:0 >= 0 && 10 * x82:0 >= 0 && 1000 * x80:0 + 100 * x81:0 >= 0 && x82:0 > -1 && x83:0 > -1 && 1000 * x80:0 + 100 * x81:0 + 10 * x82:0 >= 0) The following rules are bounded: f541_0_rec3_GT(x80:0, x81:0, x82:0, x83:0, x84:0) -> f541_0_rec3_GT(x80:0, x81:0, x82:0, c, x84:0) :|: c = x83:0 + 1 && (x84:0 >= x83:0 && 100 * x81:0 >= 0 && 1000 * x80:0 >= 0 && 10 * x82:0 >= 0 && 1000 * x80:0 + 100 * x81:0 >= 0 && x82:0 > -1 && x83:0 > -1 && 1000 * x80:0 + 100 * x81:0 + 10 * x82:0 >= 0) ---------------------------------------- (47) YES ---------------------------------------- (48) Obligation: Termination digraph: Nodes: (1) f493_0_rec4_LT(x100, x101, x102, x103, x104) -> f493_0_rec4_LT(x105, x106, x107, x108, x109) :|: x100 - 1 = x105 && -1 <= x100 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (49) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (50) Obligation: Rules: f493_0_rec4_LT(x100:0, x101:0, x102:0, x103:0, x104:0) -> f493_0_rec4_LT(x100:0 - 1, x106:0, x107:0, x108:0, x109:0) :|: x100:0 > -1 ---------------------------------------- (51) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f493_0_rec4_LT(x1, x2, x3, x4, x5) -> f493_0_rec4_LT(x1) ---------------------------------------- (52) Obligation: Rules: f493_0_rec4_LT(x100:0) -> f493_0_rec4_LT(x100:0 - 1) :|: x100:0 > -1 ---------------------------------------- (53) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f493_0_rec4_LT(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (54) Obligation: Rules: f493_0_rec4_LT(x100:0) -> f493_0_rec4_LT(c) :|: c = x100:0 - 1 && x100:0 > -1 ---------------------------------------- (55) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f493_0_rec4_LT ] = f493_0_rec4_LT_1 The following rules are decreasing: f493_0_rec4_LT(x100:0) -> f493_0_rec4_LT(c) :|: c = x100:0 - 1 && x100:0 > -1 The following rules are bounded: f493_0_rec4_LT(x100:0) -> f493_0_rec4_LT(c) :|: c = x100:0 - 1 && x100:0 > -1 ---------------------------------------- (56) YES