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