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, 807 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 22 ms] (7) IRSwT (8) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (9) IRSwT (10) TempFilterProof [SOUND, 34 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 0 ms] (13) IntTRS (14) RankingReductionPairProof [EQUIVALENT, 0 ms] (15) YES (16) IRSwT (17) IntTRSCompressionProof [EQUIVALENT, 11 ms] (18) IRSwT (19) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (20) IRSwT (21) TempFilterProof [SOUND, 99 ms] (22) IntTRS (23) RankingReductionPairProof [EQUIVALENT, 0 ms] (24) IntTRS (25) PolynomialOrderProcessor [EQUIVALENT, 6 ms] (26) AND (27) IntTRS (28) RankingReductionPairProof [EQUIVALENT, 0 ms] (29) YES (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 0 ms] (32) IntTRS (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (34) YES ---------------------------------------- (0) Obligation: Rules: l0(i4HAT0, j5HAT0, k6HAT0) -> l1(i4HATpost, j5HATpost, k6HATpost) :|: k6HAT0 = k6HATpost && j5HAT0 = j5HATpost && i4HAT0 = i4HATpost l2(x, x1, x2) -> l3(x3, x4, x5) :|: x2 = x5 && x1 = x4 && x = x3 l4(x6, x7, x8) -> l5(x9, x10, x11) :|: x8 = x11 && x7 = x10 && x6 = x9 l6(x12, x13, x14) -> l7(x15, x16, x17) :|: x14 = x17 && x13 = x16 && x12 = x15 l8(x18, x19, x20) -> l6(x21, x22, x23) :|: x20 = x23 && x18 = x21 && x22 = 1 + x19 && 6 <= x20 l8(x24, x25, x26) -> l9(x27, x28, x29) :|: x25 = x28 && x24 = x27 && x29 = 1 + x26 && x26 <= 5 l7(x30, x31, x32) -> l4(x33, x34, x35) :|: x32 = x35 && x31 = x34 && x33 = 1 + x30 && 6 <= x31 l7(x36, x37, x38) -> l9(x39, x40, x41) :|: x37 = x40 && x36 = x39 && x41 = 1 && x37 <= 5 l5(x42, x43, x44) -> l10(x45, x46, x47) :|: x44 = x47 && x43 = x46 && x42 = x45 && 6 <= x42 l5(x48, x49, x50) -> l6(x51, x52, x53) :|: x50 = x53 && x48 = x51 && x52 = 1 && x48 <= 5 l9(x54, x55, x56) -> l8(x57, x58, x59) :|: x56 = x59 && x55 = x58 && x54 = x57 l3(x60, x61, x62) -> l0(x63, x64, x65) :|: x62 = x65 && x61 = x64 && x63 = 1 + x60 && 6 <= x61 l3(x66, x67, x68) -> l2(x69, x70, x71) :|: x68 = x71 && x66 = x69 && x70 = 1 + x67 && x67 <= 5 l1(x72, x73, x74) -> l4(x75, x76, x77) :|: x74 = x77 && x73 = x76 && x75 = 1 && 6 <= x72 l1(x78, x79, x80) -> l2(x81, x82, x83) :|: x80 = x83 && x78 = x81 && x82 = 1 && x78 <= 5 l11(x84, x85, x86) -> l0(x87, x88, x89) :|: x86 = x89 && x85 = x88 && x87 = 1 l12(x90, x91, x92) -> l11(x93, x94, x95) :|: x92 = x95 && x91 = x94 && x90 = x93 Start term: l12(i4HAT0, j5HAT0, k6HAT0) ---------------------------------------- (1) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (2) Obligation: Rules: l0(i4HAT0, j5HAT0, k6HAT0) -> l1(i4HATpost, j5HATpost, k6HATpost) :|: k6HAT0 = k6HATpost && j5HAT0 = j5HATpost && i4HAT0 = i4HATpost l2(x, x1, x2) -> l3(x3, x4, x5) :|: x2 = x5 && x1 = x4 && x = x3 l4(x6, x7, x8) -> l5(x9, x10, x11) :|: x8 = x11 && x7 = x10 && x6 = x9 l6(x12, x13, x14) -> l7(x15, x16, x17) :|: x14 = x17 && x13 = x16 && x12 = x15 l8(x18, x19, x20) -> l6(x21, x22, x23) :|: x20 = x23 && x18 = x21 && x22 = 1 + x19 && 6 <= x20 l8(x24, x25, x26) -> l9(x27, x28, x29) :|: x25 = x28 && x24 = x27 && x29 = 1 + x26 && x26 <= 5 l7(x30, x31, x32) -> l4(x33, x34, x35) :|: x32 = x35 && x31 = x34 && x33 = 1 + x30 && 6 <= x31 l7(x36, x37, x38) -> l9(x39, x40, x41) :|: x37 = x40 && x36 = x39 && x41 = 1 && x37 <= 5 l5(x42, x43, x44) -> l10(x45, x46, x47) :|: x44 = x47 && x43 = x46 && x42 = x45 && 6 <= x42 l5(x48, x49, x50) -> l6(x51, x52, x53) :|: x50 = x53 && x48 = x51 && x52 = 1 && x48 <= 5 l9(x54, x55, x56) -> l8(x57, x58, x59) :|: x56 = x59 && x55 = x58 && x54 = x57 l3(x60, x61, x62) -> l0(x63, x64, x65) :|: x62 = x65 && x61 = x64 && x63 = 1 + x60 && 6 <= x61 l3(x66, x67, x68) -> l2(x69, x70, x71) :|: x68 = x71 && x66 = x69 && x70 = 1 + x67 && x67 <= 5 l1(x72, x73, x74) -> l4(x75, x76, x77) :|: x74 = x77 && x73 = x76 && x75 = 1 && 6 <= x72 l1(x78, x79, x80) -> l2(x81, x82, x83) :|: x80 = x83 && x78 = x81 && x82 = 1 && x78 <= 5 l11(x84, x85, x86) -> l0(x87, x88, x89) :|: x86 = x89 && x85 = x88 && x87 = 1 l12(x90, x91, x92) -> l11(x93, x94, x95) :|: x92 = x95 && x91 = x94 && x90 = x93 Start term: l12(i4HAT0, j5HAT0, k6HAT0) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) l0(i4HAT0, j5HAT0, k6HAT0) -> l1(i4HATpost, j5HATpost, k6HATpost) :|: k6HAT0 = k6HATpost && j5HAT0 = j5HATpost && i4HAT0 = i4HATpost (2) l2(x, x1, x2) -> l3(x3, x4, x5) :|: x2 = x5 && x1 = x4 && x = x3 (3) l4(x6, x7, x8) -> l5(x9, x10, x11) :|: x8 = x11 && x7 = x10 && x6 = x9 (4) l6(x12, x13, x14) -> l7(x15, x16, x17) :|: x14 = x17 && x13 = x16 && x12 = x15 (5) l8(x18, x19, x20) -> l6(x21, x22, x23) :|: x20 = x23 && x18 = x21 && x22 = 1 + x19 && 6 <= x20 (6) l8(x24, x25, x26) -> l9(x27, x28, x29) :|: x25 = x28 && x24 = x27 && x29 = 1 + x26 && x26 <= 5 (7) l7(x30, x31, x32) -> l4(x33, x34, x35) :|: x32 = x35 && x31 = x34 && x33 = 1 + x30 && 6 <= x31 (8) l7(x36, x37, x38) -> l9(x39, x40, x41) :|: x37 = x40 && x36 = x39 && x41 = 1 && x37 <= 5 (9) l5(x42, x43, x44) -> l10(x45, x46, x47) :|: x44 = x47 && x43 = x46 && x42 = x45 && 6 <= x42 (10) l5(x48, x49, x50) -> l6(x51, x52, x53) :|: x50 = x53 && x48 = x51 && x52 = 1 && x48 <= 5 (11) l9(x54, x55, x56) -> l8(x57, x58, x59) :|: x56 = x59 && x55 = x58 && x54 = x57 (12) l3(x60, x61, x62) -> l0(x63, x64, x65) :|: x62 = x65 && x61 = x64 && x63 = 1 + x60 && 6 <= x61 (13) l3(x66, x67, x68) -> l2(x69, x70, x71) :|: x68 = x71 && x66 = x69 && x70 = 1 + x67 && x67 <= 5 (14) l1(x72, x73, x74) -> l4(x75, x76, x77) :|: x74 = x77 && x73 = x76 && x75 = 1 && 6 <= x72 (15) l1(x78, x79, x80) -> l2(x81, x82, x83) :|: x80 = x83 && x78 = x81 && x82 = 1 && x78 <= 5 (16) l11(x84, x85, x86) -> l0(x87, x88, x89) :|: x86 = x89 && x85 = x88 && x87 = 1 (17) l12(x90, x91, x92) -> l11(x93, x94, x95) :|: x92 = x95 && x91 = x94 && x90 = x93 Arcs: (1) -> (14), (15) (2) -> (12), (13) (3) -> (9), (10) (4) -> (7), (8) (5) -> (4) (6) -> (11) (7) -> (3) (8) -> (11) (10) -> (4) (11) -> (5), (6) (12) -> (1) (13) -> (2) (14) -> (3) (15) -> (2) (16) -> (1) (17) -> (16) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) l0(i4HAT0, j5HAT0, k6HAT0) -> l1(i4HATpost, j5HATpost, k6HATpost) :|: k6HAT0 = k6HATpost && j5HAT0 = j5HATpost && i4HAT0 = i4HATpost (2) l3(x60, x61, x62) -> l0(x63, x64, x65) :|: x62 = x65 && x61 = x64 && x63 = 1 + x60 && 6 <= x61 (3) l2(x, x1, x2) -> l3(x3, x4, x5) :|: x2 = x5 && x1 = x4 && x = x3 (4) l1(x78, x79, x80) -> l2(x81, x82, x83) :|: x80 = x83 && x78 = x81 && x82 = 1 && x78 <= 5 (5) l3(x66, x67, x68) -> l2(x69, x70, x71) :|: x68 = x71 && x66 = x69 && x70 = 1 + x67 && x67 <= 5 Arcs: (1) -> (4) (2) -> (1) (3) -> (2), (5) (4) -> (3) (5) -> (3) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: l2(x3:0, j5HATpost:0, k6HATpost:0) -> l2(1 + x3:0, 1, k6HATpost:0) :|: j5HATpost:0 > 5 && x3:0 < 5 l2(x, x1, x2) -> l2(x, 1 + x1, x2) :|: x1 < 6 ---------------------------------------- (8) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: l2(x1, x2, x3) -> l2(x1, x2) ---------------------------------------- (9) Obligation: Rules: l2(x3:0, j5HATpost:0) -> l2(1 + x3:0, 1) :|: j5HATpost:0 > 5 && x3:0 < 5 l2(x, x1) -> l2(x, 1 + x1) :|: x1 < 6 ---------------------------------------- (10) TempFilterProof (SOUND) Used the following sort dictionary for filtering: l2(VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (11) Obligation: Rules: l2(x3:0, j5HATpost:0) -> l2(c, c1) :|: c1 = 1 && c = 1 + x3:0 && (j5HATpost:0 > 5 && x3:0 < 5) l2(x, x1) -> l2(x, c2) :|: c2 = 1 + x1 && x1 < 6 ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ l2 ] = -1*l2_1 The following rules are decreasing: l2(x3:0, j5HATpost:0) -> l2(c, c1) :|: c1 = 1 && c = 1 + x3:0 && (j5HATpost:0 > 5 && x3:0 < 5) The following rules are bounded: l2(x3:0, j5HATpost:0) -> l2(c, c1) :|: c1 = 1 && c = 1 + x3:0 && (j5HATpost:0 > 5 && x3:0 < 5) ---------------------------------------- (13) Obligation: Rules: l2(x, x1) -> l2(x, c2) :|: c2 = 1 + x1 && x1 < 6 ---------------------------------------- (14) RankingReductionPairProof (EQUIVALENT) Interpretation: [ l2 ] = -1*l2_2 The following rules are decreasing: l2(x, x1) -> l2(x, c2) :|: c2 = 1 + x1 && x1 < 6 The following rules are bounded: l2(x, x1) -> l2(x, c2) :|: c2 = 1 + x1 && x1 < 6 ---------------------------------------- (15) YES ---------------------------------------- (16) Obligation: Termination digraph: Nodes: (1) l4(x6, x7, x8) -> l5(x9, x10, x11) :|: x8 = x11 && x7 = x10 && x6 = x9 (2) l7(x30, x31, x32) -> l4(x33, x34, x35) :|: x32 = x35 && x31 = x34 && x33 = 1 + x30 && 6 <= x31 (3) l6(x12, x13, x14) -> l7(x15, x16, x17) :|: x14 = x17 && x13 = x16 && x12 = x15 (4) l5(x48, x49, x50) -> l6(x51, x52, x53) :|: x50 = x53 && x48 = x51 && x52 = 1 && x48 <= 5 (5) l8(x18, x19, x20) -> l6(x21, x22, x23) :|: x20 = x23 && x18 = x21 && x22 = 1 + x19 && 6 <= x20 (6) l9(x54, x55, x56) -> l8(x57, x58, x59) :|: x56 = x59 && x55 = x58 && x54 = x57 (7) l7(x36, x37, x38) -> l9(x39, x40, x41) :|: x37 = x40 && x36 = x39 && x41 = 1 && x37 <= 5 (8) l8(x24, x25, x26) -> l9(x27, x28, x29) :|: x25 = x28 && x24 = x27 && x29 = 1 + x26 && x26 <= 5 Arcs: (1) -> (4) (2) -> (1) (3) -> (2), (7) (4) -> (3) (5) -> (3) (6) -> (5), (8) (7) -> (6) (8) -> (6) This digraph is fully evaluated! ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: l6(x12:0, x13:0, x14:0) -> l9(x12:0, x13:0, 1) :|: x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, 1 + x56:0) :|: x56:0 < 6 l9(x21:0, x55:0, x23:0) -> l6(x21:0, 1 + x55:0, x23:0) :|: x23:0 > 5 l6(x, x1, x2) -> l6(1 + x, 1, x2) :|: x1 > 5 && x < 5 ---------------------------------------- (19) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: l6(x1, x2, x3) -> l6(x1, x2) ---------------------------------------- (20) Obligation: Rules: l6(x12:0, x13:0) -> l9(x12:0, x13:0, 1) :|: x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, 1 + x56:0) :|: x56:0 < 6 l9(x21:0, x55:0, x23:0) -> l6(x21:0, 1 + x55:0) :|: x23:0 > 5 l6(x, x1) -> l6(1 + x, 1) :|: x1 > 5 && x < 5 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: l6(VARIABLE, VARIABLE) l9(VARIABLE, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: l6(x12:0, x13:0) -> l9(x12:0, x13:0, c) :|: c = 1 && x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 l9(x21:0, x55:0, x23:0) -> l6(x21:0, c2) :|: c2 = 1 + x55:0 && x23:0 > 5 l6(x, x1) -> l6(c3, c4) :|: c4 = 1 && c3 = 1 + x && (x1 > 5 && x < 5) ---------------------------------------- (23) RankingReductionPairProof (EQUIVALENT) Interpretation: [ l6 ] = -2*l6_1 [ l9 ] = -2*l9_1 The following rules are decreasing: l6(x, x1) -> l6(c3, c4) :|: c4 = 1 && c3 = 1 + x && (x1 > 5 && x < 5) The following rules are bounded: l6(x, x1) -> l6(c3, c4) :|: c4 = 1 && c3 = 1 + x && (x1 > 5 && x < 5) ---------------------------------------- (24) Obligation: Rules: l6(x12:0, x13:0) -> l9(x12:0, x13:0, c) :|: c = 1 && x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 l9(x21:0, x55:0, x23:0) -> l6(x21:0, c2) :|: c2 = 1 + x55:0 && x23:0 > 5 ---------------------------------------- (25) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [l6(x, x1)] = 5 - x1 [l9(x2, x3, x4)] = 5 - x3 The following rules are decreasing: l9(x21:0, x55:0, x23:0) -> l6(x21:0, c2) :|: c2 = 1 + x55:0 && x23:0 > 5 The following rules are bounded: l6(x12:0, x13:0) -> l9(x12:0, x13:0, c) :|: c = 1 && x13:0 < 6 ---------------------------------------- (26) Complex Obligation (AND) ---------------------------------------- (27) Obligation: Rules: l6(x12:0, x13:0) -> l9(x12:0, x13:0, c) :|: c = 1 && x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 ---------------------------------------- (28) RankingReductionPairProof (EQUIVALENT) Interpretation: [ l6 ] = 0 [ l9 ] = -1*l9_3 The following rules are decreasing: l6(x12:0, x13:0) -> l9(x12:0, x13:0, c) :|: c = 1 && x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 The following rules are bounded: l6(x12:0, x13:0) -> l9(x12:0, x13:0, c) :|: c = 1 && x13:0 < 6 l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: Rules: l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 l9(x21:0, x55:0, x23:0) -> l6(x21:0, c2) :|: c2 = 1 + x55:0 && x23:0 > 5 ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ l9 ] = 0 [ l6 ] = -1 The following rules are decreasing: l9(x21:0, x55:0, x23:0) -> l6(x21:0, c2) :|: c2 = 1 + x55:0 && x23:0 > 5 The following rules are bounded: l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 l9(x21:0, x55:0, x23:0) -> l6(x21:0, c2) :|: c2 = 1 + x55:0 && x23:0 > 5 ---------------------------------------- (32) Obligation: Rules: l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 ---------------------------------------- (33) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [l9(x, x1, x2)] = 5 - x2 The following rules are decreasing: l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 The following rules are bounded: l9(x27:0, x28:0, x56:0) -> l9(x27:0, x28:0, c1) :|: c1 = 1 + x56:0 && x56:0 < 6 ---------------------------------------- (34) YES