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, 455 ms] (4) IRSwT (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] (6) IRSwT (7) TempFilterProof [SOUND, 96 ms] (8) IntTRS (9) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (10) IntTRS (11) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (12) IntTRS (13) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (14) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3, arg4, arg5) -> f375_0_dif_GE(arg1P, arg2P, arg3P, arg4P, arg5P) :|: 0 = arg3P && 0 = arg2P && 0 = arg1P f375_0_dif_GE(x, x1, x2, x3, x4) -> f484_0_dif_GE(x5, x6, x7, x8, x9) :|: 0 = x9 && 0 = x8 && 0 = x7 && x1 = x6 && x = x5 && x1 = x2 && x1 <= 19 f484_0_dif_GE(x10, x11, x12, x13, x14) -> f375_0_dif_GE(x15, x16, x17, x18, x19) :|: x11 + 1 = x17 && x11 + 1 = x16 && x10 = x15 && x13 = x14 && 1 = x12 && 19 <= x13 - 1 f484_0_dif_GE(x20, x21, x22, x23, x24) -> f375_0_dif_GE(x25, x26, x27, x28, x31) :|: x21 + 1 = x27 && x21 + 1 = x26 && x20 = x25 && x23 = x24 && 1 = x22 && x23 <= 19 f484_0_dif_GE(x32, x33, x34, x35, x36) -> f484_0_dif_GE(x37, x38, x39, x40, x41) :|: x33 <= 19 && x42 <= x43 - 1 && x35 <= 19 && 0 = x34 && x35 = x36 && x32 = x37 && x33 = x38 && 0 = x39 && x35 + 1 = x40 && x35 + 1 = x41 f484_0_dif_GE(x44, x45, x46, x47, x48) -> f375_0_dif_GE(x49, x50, x51, x52, x53) :|: x45 + 1 = x51 && x45 + 1 = x50 && x44 + 1 = x49 && x47 = x48 && 0 = x46 && 19 <= x47 - 1 && x45 <= 19 && x44 <= 19 f484_0_dif_GE(x54, x55, x56, x57, x58) -> f484_0_dif_GE(x59, x60, x61, x62, x63) :|: x57 = x63 && x57 = x62 && 1 = x61 && x55 = x60 && x54 = x59 && x57 = x58 && 0 = x56 && x55 <= 19 && x57 <= 19 __init(x64, x65, x66, x67, x68) -> f1_0_main_ConstantStackPush(x69, x70, x71, x72, x73) :|: 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) -> f375_0_dif_GE(arg1P, arg2P, arg3P, arg4P, arg5P) :|: 0 = arg3P && 0 = arg2P && 0 = arg1P f375_0_dif_GE(x, x1, x2, x3, x4) -> f484_0_dif_GE(x5, x6, x7, x8, x9) :|: 0 = x9 && 0 = x8 && 0 = x7 && x1 = x6 && x = x5 && x1 = x2 && x1 <= 19 f484_0_dif_GE(x10, x11, x12, x13, x14) -> f375_0_dif_GE(x15, x16, x17, x18, x19) :|: x11 + 1 = x17 && x11 + 1 = x16 && x10 = x15 && x13 = x14 && 1 = x12 && 19 <= x13 - 1 f484_0_dif_GE(x20, x21, x22, x23, x24) -> f375_0_dif_GE(x25, x26, x27, x28, x31) :|: x21 + 1 = x27 && x21 + 1 = x26 && x20 = x25 && x23 = x24 && 1 = x22 && x23 <= 19 f484_0_dif_GE(x32, x33, x34, x35, x36) -> f484_0_dif_GE(x37, x38, x39, x40, x41) :|: x33 <= 19 && x42 <= x43 - 1 && x35 <= 19 && 0 = x34 && x35 = x36 && x32 = x37 && x33 = x38 && 0 = x39 && x35 + 1 = x40 && x35 + 1 = x41 f484_0_dif_GE(x44, x45, x46, x47, x48) -> f375_0_dif_GE(x49, x50, x51, x52, x53) :|: x45 + 1 = x51 && x45 + 1 = x50 && x44 + 1 = x49 && x47 = x48 && 0 = x46 && 19 <= x47 - 1 && x45 <= 19 && x44 <= 19 f484_0_dif_GE(x54, x55, x56, x57, x58) -> f484_0_dif_GE(x59, x60, x61, x62, x63) :|: x57 = x63 && x57 = x62 && 1 = x61 && x55 = x60 && x54 = x59 && x57 = x58 && 0 = x56 && x55 <= 19 && x57 <= 19 __init(x64, x65, x66, x67, x68) -> f1_0_main_ConstantStackPush(x69, x70, x71, x72, x73) :|: 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) -> f375_0_dif_GE(arg1P, arg2P, arg3P, arg4P, arg5P) :|: 0 = arg3P && 0 = arg2P && 0 = arg1P (2) f375_0_dif_GE(x, x1, x2, x3, x4) -> f484_0_dif_GE(x5, x6, x7, x8, x9) :|: 0 = x9 && 0 = x8 && 0 = x7 && x1 = x6 && x = x5 && x1 = x2 && x1 <= 19 (3) f484_0_dif_GE(x10, x11, x12, x13, x14) -> f375_0_dif_GE(x15, x16, x17, x18, x19) :|: x11 + 1 = x17 && x11 + 1 = x16 && x10 = x15 && x13 = x14 && 1 = x12 && 19 <= x13 - 1 (4) f484_0_dif_GE(x20, x21, x22, x23, x24) -> f375_0_dif_GE(x25, x26, x27, x28, x31) :|: x21 + 1 = x27 && x21 + 1 = x26 && x20 = x25 && x23 = x24 && 1 = x22 && x23 <= 19 (5) f484_0_dif_GE(x32, x33, x34, x35, x36) -> f484_0_dif_GE(x37, x38, x39, x40, x41) :|: x33 <= 19 && x42 <= x43 - 1 && x35 <= 19 && 0 = x34 && x35 = x36 && x32 = x37 && x33 = x38 && 0 = x39 && x35 + 1 = x40 && x35 + 1 = x41 (6) f484_0_dif_GE(x44, x45, x46, x47, x48) -> f375_0_dif_GE(x49, x50, x51, x52, x53) :|: x45 + 1 = x51 && x45 + 1 = x50 && x44 + 1 = x49 && x47 = x48 && 0 = x46 && 19 <= x47 - 1 && x45 <= 19 && x44 <= 19 (7) f484_0_dif_GE(x54, x55, x56, x57, x58) -> f484_0_dif_GE(x59, x60, x61, x62, x63) :|: x57 = x63 && x57 = x62 && 1 = x61 && x55 = x60 && x54 = x59 && x57 = x58 && 0 = x56 && x55 <= 19 && x57 <= 19 (8) __init(x64, x65, x66, x67, x68) -> f1_0_main_ConstantStackPush(x69, x70, x71, x72, x73) :|: 0 <= 0 Arcs: (1) -> (2) (2) -> (5), (7) (3) -> (2) (4) -> (2) (5) -> (5), (6), (7) (6) -> (2) (7) -> (4) (8) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Obligation: Termination digraph: Nodes: (1) f375_0_dif_GE(x, x1, x2, x3, x4) -> f484_0_dif_GE(x5, x6, x7, x8, x9) :|: 0 = x9 && 0 = x8 && 0 = x7 && x1 = x6 && x = x5 && x1 = x2 && x1 <= 19 (2) f484_0_dif_GE(x44, x45, x46, x47, x48) -> f375_0_dif_GE(x49, x50, x51, x52, x53) :|: x45 + 1 = x51 && x45 + 1 = x50 && x44 + 1 = x49 && x47 = x48 && 0 = x46 && 19 <= x47 - 1 && x45 <= 19 && x44 <= 19 (3) f484_0_dif_GE(x20, x21, x22, x23, x24) -> f375_0_dif_GE(x25, x26, x27, x28, x31) :|: x21 + 1 = x27 && x21 + 1 = x26 && x20 = x25 && x23 = x24 && 1 = x22 && x23 <= 19 (4) f484_0_dif_GE(x54, x55, x56, x57, x58) -> f484_0_dif_GE(x59, x60, x61, x62, x63) :|: x57 = x63 && x57 = x62 && 1 = x61 && x55 = x60 && x54 = x59 && x57 = x58 && 0 = x56 && x55 <= 19 && x57 <= 19 (5) f484_0_dif_GE(x32, x33, x34, x35, x36) -> f484_0_dif_GE(x37, x38, x39, x40, x41) :|: x33 <= 19 && x42 <= x43 - 1 && x35 <= 19 && 0 = x34 && x35 = x36 && x32 = x37 && x33 = x38 && 0 = x39 && x35 + 1 = x40 && x35 + 1 = x41 Arcs: (1) -> (4), (5) (2) -> (1) (3) -> (1) (4) -> (3) (5) -> (2), (4), (5) This digraph is fully evaluated! ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f484_0_dif_GE(x44:0, x45:0, cons_0, x47:0, x47:0) -> f484_0_dif_GE(x44:0 + 1, x45:0 + 1, 0, 0, 0) :|: x45:0 < 19 && x44:0 < 20 && x47:0 > 19 && x45:0 < 20 && cons_0 = 0 f484_0_dif_GE(x20:0, x21:0, cons_1, x23:0, x23:0) -> f484_0_dif_GE(x20:0, x21:0 + 1, 0, 0, 0) :|: x23:0 < 20 && x21:0 < 19 && cons_1 = 1 f484_0_dif_GE(x, x1, x2, x3, x3) -> f484_0_dif_GE(x, x1, 0, x3 + 1, x3 + 1) :|: x1 < 20 && x4 - 1 >= x5 && x3 < 20 && x2 = 0 f484_0_dif_GE(x6, x7, x8, x9, x9) -> f484_0_dif_GE(x6, x7, 1, x9, x9) :|: x9 < 20 && x7 < 20 && x8 = 0 ---------------------------------------- (7) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f484_0_dif_GE(VARIABLE, INTEGER, VARIABLE, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (8) Obligation: Rules: f484_0_dif_GE(x44:0, x45:0, c, x47:0, x47:0) -> f484_0_dif_GE(c1, c2, c3, c4, c5) :|: c5 = 0 && (c4 = 0 && (c3 = 0 && (c2 = x45:0 + 1 && (c1 = x44:0 + 1 && c = 0)))) && (x45:0 < 19 && x44:0 < 20 && x47:0 > 19 && x45:0 < 20 && cons_0 = 0) f484_0_dif_GE(x20:0, x21:0, c6, x23:0, x23:0) -> f484_0_dif_GE(x20:0, c7, c8, c9, c10) :|: c10 = 0 && (c9 = 0 && (c8 = 0 && (c7 = x21:0 + 1 && c6 = 1))) && (x23:0 < 20 && x21:0 < 19 && cons_1 = 1) f484_0_dif_GE(x, x1, c11, x3, x3) -> f484_0_dif_GE(x, x1, c12, c13, c14) :|: c14 = x3 + 1 && (c13 = x3 + 1 && (c12 = 0 && c11 = 0)) && (x1 < 20 && x4 - 1 >= x5 && x3 < 20 && x2 = 0) f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) ---------------------------------------- (9) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f484_0_dif_GE(x, x1, x2, x3, x4)] = 19 - x1 The following rules are decreasing: f484_0_dif_GE(x44:0, x45:0, c, x47:0, x47:0) -> f484_0_dif_GE(c1, c2, c3, c4, c5) :|: c5 = 0 && (c4 = 0 && (c3 = 0 && (c2 = x45:0 + 1 && (c1 = x44:0 + 1 && c = 0)))) && (x45:0 < 19 && x44:0 < 20 && x47:0 > 19 && x45:0 < 20 && cons_0 = 0) f484_0_dif_GE(x20:0, x21:0, c6, x23:0, x23:0) -> f484_0_dif_GE(x20:0, c7, c8, c9, c10) :|: c10 = 0 && (c9 = 0 && (c8 = 0 && (c7 = x21:0 + 1 && c6 = 1))) && (x23:0 < 20 && x21:0 < 19 && cons_1 = 1) The following rules are bounded: f484_0_dif_GE(x44:0, x45:0, c, x47:0, x47:0) -> f484_0_dif_GE(c1, c2, c3, c4, c5) :|: c5 = 0 && (c4 = 0 && (c3 = 0 && (c2 = x45:0 + 1 && (c1 = x44:0 + 1 && c = 0)))) && (x45:0 < 19 && x44:0 < 20 && x47:0 > 19 && x45:0 < 20 && cons_0 = 0) f484_0_dif_GE(x20:0, x21:0, c6, x23:0, x23:0) -> f484_0_dif_GE(x20:0, c7, c8, c9, c10) :|: c10 = 0 && (c9 = 0 && (c8 = 0 && (c7 = x21:0 + 1 && c6 = 1))) && (x23:0 < 20 && x21:0 < 19 && cons_1 = 1) f484_0_dif_GE(x, x1, c11, x3, x3) -> f484_0_dif_GE(x, x1, c12, c13, c14) :|: c14 = x3 + 1 && (c13 = x3 + 1 && (c12 = 0 && c11 = 0)) && (x1 < 20 && x4 - 1 >= x5 && x3 < 20 && x2 = 0) f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) ---------------------------------------- (10) Obligation: Rules: f484_0_dif_GE(x, x1, c11, x3, x3) -> f484_0_dif_GE(x, x1, c12, c13, c14) :|: c14 = x3 + 1 && (c13 = x3 + 1 && (c12 = 0 && c11 = 0)) && (x1 < 20 && x4 - 1 >= x5 && x3 < 20 && x2 = 0) f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) ---------------------------------------- (11) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f484_0_dif_GE(x, x1, x2, x3, x4)] = 19 - x3 The following rules are decreasing: f484_0_dif_GE(x, x1, c11, x3, x3) -> f484_0_dif_GE(x, x1, c12, c13, c14) :|: c14 = x3 + 1 && (c13 = x3 + 1 && (c12 = 0 && c11 = 0)) && (x1 < 20 && x4 - 1 >= x5 && x3 < 20 && x2 = 0) The following rules are bounded: f484_0_dif_GE(x, x1, c11, x3, x3) -> f484_0_dif_GE(x, x1, c12, c13, c14) :|: c14 = x3 + 1 && (c13 = x3 + 1 && (c12 = 0 && c11 = 0)) && (x1 < 20 && x4 - 1 >= x5 && x3 < 20 && x2 = 0) f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) ---------------------------------------- (12) Obligation: Rules: f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) ---------------------------------------- (13) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f484_0_dif_GE(x, x1, x2, x3, x4)] = -x2 The following rules are decreasing: f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) The following rules are bounded: f484_0_dif_GE(x6, x7, c15, x9, x9) -> f484_0_dif_GE(x6, x7, c16, x9, x9) :|: c16 = 1 && c15 = 0 && (x9 < 20 && x7 < 20 && x8 = 0) ---------------------------------------- (14) YES