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, 501 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IRSwT (8) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (9) IRSwT (10) TempFilterProof [SOUND, 134 ms] (11) IntTRS (12) PolynomialOrderProcessor [EQUIVALENT, 10 ms] (13) YES (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (18) IRSwT (19) IRSwTChainingProof [EQUIVALENT, 0 ms] (20) IRSwT (21) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (22) IRSwT (23) IntTRSCompressionProof [EQUIVALENT, 0 ms] (24) IRSwT (25) TempFilterProof [SOUND, 7 ms] (26) IntTRS (27) RankingReductionPairProof [EQUIVALENT, 0 ms] (28) YES (29) IRSwT (30) IntTRSCompressionProof [EQUIVALENT, 0 ms] (31) IRSwT (32) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (33) IRSwT (34) TempFilterProof [SOUND, 74 ms] (35) IntTRS (36) PolynomialOrderProcessor [EQUIVALENT, 4 ms] (37) YES (38) IRSwT (39) IntTRSCompressionProof [EQUIVALENT, 0 ms] (40) IRSwT (41) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (42) IRSwT (43) TempFilterProof [SOUND, 7 ms] (44) IntTRS (45) RankingReductionPairProof [EQUIVALENT, 0 ms] (46) YES (47) IRSwT (48) IntTRSCompressionProof [EQUIVALENT, 0 ms] (49) IRSwT (50) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (51) IRSwT (52) FilterProof [EQUIVALENT, 1 ms] (53) IntTRS (54) IntTRSCompressionProof [EQUIVALENT, 0 ms] (55) IntTRS (56) RankingReductionPairProof [EQUIVALENT, 3 ms] (57) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4) -> f162_0_mk_LE(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg4P && arg2 = arg3P && arg2 - 1 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f162_0_mk_LE(x, x1, x2, x3) -> f162_0_mk_LE(x4, x5, x6, x7) :|: x3 = x7 && x1 = x6 && x1 - 1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && 0 <= x2 - 1 && x4 <= x f162_0_mk_LE(x8, x9, x10, x11) -> f276_0_mk_LE(x12, x13, x14, x15) :|: x11 = x15 && x11 = x14 && x11 - 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x10 <= 0 f276_0_mk_LE(x16, x17, x18, x19) -> f276_0_mk_LE(x20, x21, x22, x23) :|: x19 = x23 && x17 = x22 && x17 - 1 = x21 && 0 <= x20 - 1 && 0 <= x16 - 1 && 0 <= x18 - 1 && x20 <= x16 f276_0_mk_LE(x24, x25, x26, x27) -> f401_0_mk_LE(x28, x29, x30, x31) :|: x27 = x29 && x27 - 1 = x28 && 0 <= x24 - 1 && -1 <= x27 - 1 && x26 <= 0 f401_0_mk_LE(x32, x33, x34, x35) -> f576_0_test_LT(x36, x37, x38, x39) :|: 2 = x36 && x33 <= 0 f401_0_mk_LE(x40, x41, x42, x43) -> f401_0_mk_LE(x44, x45, x46, x47) :|: x40 = x45 && x40 - 1 = x44 && 0 <= x41 - 1 f576_0_test_LT(x48, x49, x50, x51) -> f470_0_length_NONNULL(x52, x53, x54, x55) :|: x48 <= 2 && -1 <= x52 - 1 && -1 <= x48 - 1 f576_0_test_LT(x56, x57, x58, x59) -> f576_0_test_LT(x60, x61, x62, x63) :|: x56 - 1 = x60 && x56 <= 2 && -1 <= x56 - 1 f470_0_length_NONNULL(x64, x65, x66, x67) -> f470_0_length_NONNULL(x68, x69, x70, x71) :|: -1 <= x68 - 1 && 0 <= x64 - 1 && x68 + 1 <= x64 __init(x72, x73, x74, x75) -> f1_0_main_ConstantStackPush(x76, x77, x78, x79) :|: 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) -> f162_0_mk_LE(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg4P && arg2 = arg3P && arg2 - 1 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 f162_0_mk_LE(x, x1, x2, x3) -> f162_0_mk_LE(x4, x5, x6, x7) :|: x3 = x7 && x1 = x6 && x1 - 1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && 0 <= x2 - 1 && x4 <= x f162_0_mk_LE(x8, x9, x10, x11) -> f276_0_mk_LE(x12, x13, x14, x15) :|: x11 = x15 && x11 = x14 && x11 - 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x10 <= 0 f276_0_mk_LE(x16, x17, x18, x19) -> f276_0_mk_LE(x20, x21, x22, x23) :|: x19 = x23 && x17 = x22 && x17 - 1 = x21 && 0 <= x20 - 1 && 0 <= x16 - 1 && 0 <= x18 - 1 && x20 <= x16 f276_0_mk_LE(x24, x25, x26, x27) -> f401_0_mk_LE(x28, x29, x30, x31) :|: x27 = x29 && x27 - 1 = x28 && 0 <= x24 - 1 && -1 <= x27 - 1 && x26 <= 0 f401_0_mk_LE(x32, x33, x34, x35) -> f576_0_test_LT(x36, x37, x38, x39) :|: 2 = x36 && x33 <= 0 f401_0_mk_LE(x40, x41, x42, x43) -> f401_0_mk_LE(x44, x45, x46, x47) :|: x40 = x45 && x40 - 1 = x44 && 0 <= x41 - 1 f576_0_test_LT(x48, x49, x50, x51) -> f470_0_length_NONNULL(x52, x53, x54, x55) :|: x48 <= 2 && -1 <= x52 - 1 && -1 <= x48 - 1 f576_0_test_LT(x56, x57, x58, x59) -> f576_0_test_LT(x60, x61, x62, x63) :|: x56 - 1 = x60 && x56 <= 2 && -1 <= x56 - 1 f470_0_length_NONNULL(x64, x65, x66, x67) -> f470_0_length_NONNULL(x68, x69, x70, x71) :|: -1 <= x68 - 1 && 0 <= x64 - 1 && x68 + 1 <= x64 __init(x72, x73, x74, x75) -> f1_0_main_ConstantStackPush(x76, x77, x78, x79) :|: 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) -> f162_0_mk_LE(arg1P, arg2P, arg3P, arg4P) :|: arg2 = arg4P && arg2 = arg3P && arg2 - 1 = arg2P && 0 <= arg1P - 1 && 0 <= arg1 - 1 && -1 <= arg2 - 1 && arg1P <= arg1 (2) f162_0_mk_LE(x, x1, x2, x3) -> f162_0_mk_LE(x4, x5, x6, x7) :|: x3 = x7 && x1 = x6 && x1 - 1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && 0 <= x2 - 1 && x4 <= x (3) f162_0_mk_LE(x8, x9, x10, x11) -> f276_0_mk_LE(x12, x13, x14, x15) :|: x11 = x15 && x11 = x14 && x11 - 1 = x13 && 0 <= x12 - 1 && 0 <= x8 - 1 && x12 <= x8 && -1 <= x11 - 1 && x10 <= 0 (4) f276_0_mk_LE(x16, x17, x18, x19) -> f276_0_mk_LE(x20, x21, x22, x23) :|: x19 = x23 && x17 = x22 && x17 - 1 = x21 && 0 <= x20 - 1 && 0 <= x16 - 1 && 0 <= x18 - 1 && x20 <= x16 (5) f276_0_mk_LE(x24, x25, x26, x27) -> f401_0_mk_LE(x28, x29, x30, x31) :|: x27 = x29 && x27 - 1 = x28 && 0 <= x24 - 1 && -1 <= x27 - 1 && x26 <= 0 (6) f401_0_mk_LE(x32, x33, x34, x35) -> f576_0_test_LT(x36, x37, x38, x39) :|: 2 = x36 && x33 <= 0 (7) f401_0_mk_LE(x40, x41, x42, x43) -> f401_0_mk_LE(x44, x45, x46, x47) :|: x40 = x45 && x40 - 1 = x44 && 0 <= x41 - 1 (8) f576_0_test_LT(x48, x49, x50, x51) -> f470_0_length_NONNULL(x52, x53, x54, x55) :|: x48 <= 2 && -1 <= x52 - 1 && -1 <= x48 - 1 (9) f576_0_test_LT(x56, x57, x58, x59) -> f576_0_test_LT(x60, x61, x62, x63) :|: x56 - 1 = x60 && x56 <= 2 && -1 <= x56 - 1 (10) f470_0_length_NONNULL(x64, x65, x66, x67) -> f470_0_length_NONNULL(x68, x69, x70, x71) :|: -1 <= x68 - 1 && 0 <= x64 - 1 && x68 + 1 <= x64 (11) __init(x72, x73, x74, x75) -> f1_0_main_ConstantStackPush(x76, x77, x78, x79) :|: 0 <= 0 Arcs: (1) -> (2), (3) (2) -> (2), (3) (3) -> (4), (5) (4) -> (4), (5) (5) -> (6), (7) (6) -> (8), (9) (7) -> (6), (7) (8) -> (10) (9) -> (8), (9) (10) -> (10) (11) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) f162_0_mk_LE(x, x1, x2, x3) -> f162_0_mk_LE(x4, x5, x6, x7) :|: x3 = x7 && x1 = x6 && x1 - 1 = x5 && 0 <= x4 - 1 && 0 <= x - 1 && 0 <= x2 - 1 && x4 <= x Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f162_0_mk_LE(x:0, x1:0, x2:0, x3:0) -> f162_0_mk_LE(x4:0, x1:0 - 1, x1:0, x3:0) :|: x2:0 > 0 && x:0 >= x4:0 && x4: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: f162_0_mk_LE(x1, x2, x3, x4) -> f162_0_mk_LE(x1, x2, x3) ---------------------------------------- (9) Obligation: Rules: f162_0_mk_LE(x:0, x1:0, x2:0) -> f162_0_mk_LE(x4:0, x1:0 - 1, x1:0) :|: x2:0 > 0 && x:0 >= x4:0 && x4:0 > 0 && x:0 > 0 ---------------------------------------- (10) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f162_0_mk_LE(INTEGER, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (11) Obligation: Rules: f162_0_mk_LE(x:0, x1:0, x2:0) -> f162_0_mk_LE(x4:0, c, x1:0) :|: c = x1:0 - 1 && (x2:0 > 0 && x:0 >= x4:0 && x4:0 > 0 && x:0 > 0) ---------------------------------------- (12) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f162_0_mk_LE(x, x1, x2)] = x1^2 + 2*x2 The following rules are decreasing: f162_0_mk_LE(x:0, x1:0, x2:0) -> f162_0_mk_LE(x4:0, c, x1:0) :|: c = x1:0 - 1 && (x2:0 > 0 && x:0 >= x4:0 && x4:0 > 0 && x:0 > 0) The following rules are bounded: f162_0_mk_LE(x:0, x1:0, x2:0) -> f162_0_mk_LE(x4:0, c, x1:0) :|: c = x1:0 - 1 && (x2:0 > 0 && x:0 >= x4:0 && x4:0 > 0 && x:0 > 0) ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f276_0_mk_LE(x16, x17, x18, x19) -> f276_0_mk_LE(x20, x21, x22, x23) :|: x19 = x23 && x17 = x22 && x17 - 1 = x21 && 0 <= x20 - 1 && 0 <= x16 - 1 && 0 <= x18 - 1 && x20 <= x16 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f276_0_mk_LE(x16:0, x17:0, x18:0, x19:0) -> f276_0_mk_LE(x20:0, x17:0 - 1, x17:0, x19:0) :|: x18:0 > 0 && x20:0 <= x16:0 && x20:0 > 0 && x16:0 > 0 ---------------------------------------- (17) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f276_0_mk_LE(x1, x2, x3, x4) -> f276_0_mk_LE(x1, x2, x3) ---------------------------------------- (18) Obligation: Rules: f276_0_mk_LE(x16:0, x17:0, x18:0) -> f276_0_mk_LE(x20:0, x17:0 - 1, x17:0) :|: x18:0 > 0 && x20:0 <= x16:0 && x20:0 > 0 && x16:0 > 0 ---------------------------------------- (19) IRSwTChainingProof (EQUIVALENT) Chaining! ---------------------------------------- (20) Obligation: Rules: f276_0_mk_LE(x, x1, x2) -> f276_0_mk_LE(x7, x1 + -2, x1 + -1) :|: TRUE && x2 >= 1 && x3 + -1 * x <= 0 && x3 >= 1 && x >= 1 && x1 >= 1 && x7 + -1 * x3 <= 0 && x7 >= 1 ---------------------------------------- (21) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f276_0_mk_LE(x, x1, x2) -> f276_0_mk_LE(x7, x1 + -2, x1 + -1) :|: TRUE && x2 >= 1 && x3 + -1 * x <= 0 && x3 >= 1 && x >= 1 && x1 >= 1 && x7 + -1 * x3 <= 0 && x7 >= 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (22) Obligation: Termination digraph: Nodes: (1) f276_0_mk_LE(x, x1, x2) -> f276_0_mk_LE(x7, x1 + -2, x1 + -1) :|: TRUE && x2 >= 1 && x3 + -1 * x <= 0 && x3 >= 1 && x >= 1 && x1 >= 1 && x7 + -1 * x3 <= 0 && x7 >= 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (23) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (24) Obligation: Rules: f276_0_mk_LE(x:0, x1:0, x2:0) -> f276_0_mk_LE(x7:0, x1:0 - 2, x1:0 - 1) :|: x7:0 + -1 * x3:0 <= 0 && x7:0 > 0 && x1:0 > 0 && x:0 > 0 && x3:0 > 0 && x2:0 > 0 && x3:0 + -1 * x:0 <= 0 ---------------------------------------- (25) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f276_0_mk_LE(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (26) Obligation: Rules: f276_0_mk_LE(x:0, x1:0, x2:0) -> f276_0_mk_LE(x7:0, c, c1) :|: c1 = x1:0 - 1 && c = x1:0 - 2 && (x7:0 + -1 * x3:0 <= 0 && x7:0 > 0 && x1:0 > 0 && x:0 > 0 && x3:0 > 0 && x2:0 > 0 && x3:0 + -1 * x:0 <= 0) ---------------------------------------- (27) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f276_0_mk_LE ] = 1/2*f276_0_mk_LE_2 The following rules are decreasing: f276_0_mk_LE(x:0, x1:0, x2:0) -> f276_0_mk_LE(x7:0, c, c1) :|: c1 = x1:0 - 1 && c = x1:0 - 2 && (x7:0 + -1 * x3:0 <= 0 && x7:0 > 0 && x1:0 > 0 && x:0 > 0 && x3:0 > 0 && x2:0 > 0 && x3:0 + -1 * x:0 <= 0) The following rules are bounded: f276_0_mk_LE(x:0, x1:0, x2:0) -> f276_0_mk_LE(x7:0, c, c1) :|: c1 = x1:0 - 1 && c = x1:0 - 2 && (x7:0 + -1 * x3:0 <= 0 && x7:0 > 0 && x1:0 > 0 && x:0 > 0 && x3:0 > 0 && x2:0 > 0 && x3:0 + -1 * x:0 <= 0) ---------------------------------------- (28) YES ---------------------------------------- (29) Obligation: Termination digraph: Nodes: (1) f401_0_mk_LE(x40, x41, x42, x43) -> f401_0_mk_LE(x44, x45, x46, x47) :|: x40 = x45 && x40 - 1 = x44 && 0 <= x41 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (30) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (31) Obligation: Rules: f401_0_mk_LE(x40:0, x41:0, x42:0, x43:0) -> f401_0_mk_LE(x40:0 - 1, x40:0, x46:0, x47:0) :|: x41:0 > 0 ---------------------------------------- (32) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f401_0_mk_LE(x1, x2, x3, x4) -> f401_0_mk_LE(x1, x2) ---------------------------------------- (33) Obligation: Rules: f401_0_mk_LE(x40:0, x41:0) -> f401_0_mk_LE(x40:0 - 1, x40:0) :|: x41:0 > 0 ---------------------------------------- (34) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f401_0_mk_LE(VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (35) Obligation: Rules: f401_0_mk_LE(x40:0, x41:0) -> f401_0_mk_LE(c, x40:0) :|: c = x40:0 - 1 && x41:0 > 0 ---------------------------------------- (36) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f401_0_mk_LE(x, x1)] = x^2 + 2*x1 The following rules are decreasing: f401_0_mk_LE(x40:0, x41:0) -> f401_0_mk_LE(c, x40:0) :|: c = x40:0 - 1 && x41:0 > 0 The following rules are bounded: f401_0_mk_LE(x40:0, x41:0) -> f401_0_mk_LE(c, x40:0) :|: c = x40:0 - 1 && x41:0 > 0 ---------------------------------------- (37) YES ---------------------------------------- (38) Obligation: Termination digraph: Nodes: (1) f576_0_test_LT(x56, x57, x58, x59) -> f576_0_test_LT(x60, x61, x62, x63) :|: x56 - 1 = x60 && x56 <= 2 && -1 <= x56 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (40) Obligation: Rules: f576_0_test_LT(x56:0, x57:0, x58:0, x59:0) -> f576_0_test_LT(x56:0 - 1, x61:0, x62:0, x63:0) :|: x56:0 > -1 && x56:0 < 3 ---------------------------------------- (41) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f576_0_test_LT(x1, x2, x3, x4) -> f576_0_test_LT(x1) ---------------------------------------- (42) Obligation: Rules: f576_0_test_LT(x56:0) -> f576_0_test_LT(x56:0 - 1) :|: x56:0 > -1 && x56:0 < 3 ---------------------------------------- (43) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f576_0_test_LT(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (44) Obligation: Rules: f576_0_test_LT(x56:0) -> f576_0_test_LT(c) :|: c = x56:0 - 1 && (x56:0 > -1 && x56:0 < 3) ---------------------------------------- (45) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f576_0_test_LT ] = f576_0_test_LT_1 The following rules are decreasing: f576_0_test_LT(x56:0) -> f576_0_test_LT(c) :|: c = x56:0 - 1 && (x56:0 > -1 && x56:0 < 3) The following rules are bounded: f576_0_test_LT(x56:0) -> f576_0_test_LT(c) :|: c = x56:0 - 1 && (x56:0 > -1 && x56:0 < 3) ---------------------------------------- (46) YES ---------------------------------------- (47) Obligation: Termination digraph: Nodes: (1) f470_0_length_NONNULL(x64, x65, x66, x67) -> f470_0_length_NONNULL(x68, x69, x70, x71) :|: -1 <= x68 - 1 && 0 <= x64 - 1 && x68 + 1 <= x64 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (48) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (49) Obligation: Rules: f470_0_length_NONNULL(x64:0, x65:0, x66:0, x67:0) -> f470_0_length_NONNULL(x68:0, x69:0, x70:0, x71:0) :|: x68:0 > -1 && x64:0 > 0 && x68:0 + 1 <= x64:0 ---------------------------------------- (50) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f470_0_length_NONNULL(x1, x2, x3, x4) -> f470_0_length_NONNULL(x1) ---------------------------------------- (51) Obligation: Rules: f470_0_length_NONNULL(x64:0) -> f470_0_length_NONNULL(x68:0) :|: x68:0 > -1 && x64:0 > 0 && x68:0 + 1 <= x64:0 ---------------------------------------- (52) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f470_0_length_NONNULL(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (53) Obligation: Rules: f470_0_length_NONNULL(x64:0) -> f470_0_length_NONNULL(x68:0) :|: x68:0 > -1 && x64:0 > 0 && x68:0 + 1 <= x64:0 ---------------------------------------- (54) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (55) Obligation: Rules: f470_0_length_NONNULL(x64:0:0) -> f470_0_length_NONNULL(x68:0:0) :|: x68:0:0 > -1 && x64:0:0 > 0 && x68:0:0 + 1 <= x64:0:0 ---------------------------------------- (56) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f470_0_length_NONNULL ] = f470_0_length_NONNULL_1 The following rules are decreasing: f470_0_length_NONNULL(x64:0:0) -> f470_0_length_NONNULL(x68:0:0) :|: x68:0:0 > -1 && x64:0:0 > 0 && x68:0:0 + 1 <= x64:0:0 The following rules are bounded: f470_0_length_NONNULL(x64:0:0) -> f470_0_length_NONNULL(x68:0:0) :|: x68:0:0 > -1 && x64:0:0 > 0 && x68:0:0 + 1 <= x64:0:0 ---------------------------------------- (57) YES