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, 295 ms] (4) IRSwT (5) IntTRSCompressionProof [EQUIVALENT, 22 ms] (6) IRSwT (7) TempFilterProof [SOUND, 75 ms] (8) IntTRS (9) RankingReductionPairProof [EQUIVALENT, 0 ms] (10) IntTRS (11) RankingReductionPairProof [EQUIVALENT, 1 ms] (12) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_ConstantStackPush(arg1, arg2, arg3) -> f458_0_sort_GE(arg1P, arg2P, arg3P) :|: 1 = arg1P f458_0_sort_GE(x, x1, x2) -> f543_0_sort_GE(x3, x4, x5) :|: 100 - x = x5 && 0 = x4 && x = x3 && x <= 99 && 0 <= x - 1 f543_0_sort_GE(x6, x9, x10) -> f458_0_sort_GE(x11, x14, x15) :|: x6 + 1 = x11 && x10 <= x9 f543_0_sort_GE(x16, x17, x18) -> f543_0_sort_GE(x19, x20, x21) :|: x17 <= 99 && x17 <= x18 - 1 && -1 <= x17 - 1 && x17 <= 98 && x22 <= x23 && 0 <= x16 - 1 && x16 = x19 && x17 + 1 = x20 && 100 - x16 = x21 f543_0_sort_GE(x24, x25, x26) -> f543_0_sort_GE(x27, x28, x29) :|: x25 <= 99 && x25 <= x26 - 1 && -1 <= x25 - 1 && x25 <= 98 && 0 <= x24 - 1 && x30 <= x31 - 1 && x24 = x27 && x25 + 1 = x28 && 100 - x24 = x29 __init(x32, x33, x34) -> f1_0_main_ConstantStackPush(x35, x36, x37) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3) ---------------------------------------- (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) -> f458_0_sort_GE(arg1P, arg2P, arg3P) :|: 1 = arg1P f458_0_sort_GE(x, x1, x2) -> f543_0_sort_GE(x3, x4, x5) :|: 100 - x = x5 && 0 = x4 && x = x3 && x <= 99 && 0 <= x - 1 f543_0_sort_GE(x6, x9, x10) -> f458_0_sort_GE(x11, x14, x15) :|: x6 + 1 = x11 && x10 <= x9 f543_0_sort_GE(x16, x17, x18) -> f543_0_sort_GE(x19, x20, x21) :|: x17 <= 99 && x17 <= x18 - 1 && -1 <= x17 - 1 && x17 <= 98 && x22 <= x23 && 0 <= x16 - 1 && x16 = x19 && x17 + 1 = x20 && 100 - x16 = x21 f543_0_sort_GE(x24, x25, x26) -> f543_0_sort_GE(x27, x28, x29) :|: x25 <= 99 && x25 <= x26 - 1 && -1 <= x25 - 1 && x25 <= 98 && 0 <= x24 - 1 && x30 <= x31 - 1 && x24 = x27 && x25 + 1 = x28 && 100 - x24 = x29 __init(x32, x33, x34) -> f1_0_main_ConstantStackPush(x35, x36, x37) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1_0_main_ConstantStackPush(arg1, arg2, arg3) -> f458_0_sort_GE(arg1P, arg2P, arg3P) :|: 1 = arg1P (2) f458_0_sort_GE(x, x1, x2) -> f543_0_sort_GE(x3, x4, x5) :|: 100 - x = x5 && 0 = x4 && x = x3 && x <= 99 && 0 <= x - 1 (3) f543_0_sort_GE(x6, x9, x10) -> f458_0_sort_GE(x11, x14, x15) :|: x6 + 1 = x11 && x10 <= x9 (4) f543_0_sort_GE(x16, x17, x18) -> f543_0_sort_GE(x19, x20, x21) :|: x17 <= 99 && x17 <= x18 - 1 && -1 <= x17 - 1 && x17 <= 98 && x22 <= x23 && 0 <= x16 - 1 && x16 = x19 && x17 + 1 = x20 && 100 - x16 = x21 (5) f543_0_sort_GE(x24, x25, x26) -> f543_0_sort_GE(x27, x28, x29) :|: x25 <= 99 && x25 <= x26 - 1 && -1 <= x25 - 1 && x25 <= 98 && 0 <= x24 - 1 && x30 <= x31 - 1 && x24 = x27 && x25 + 1 = x28 && 100 - x24 = x29 (6) __init(x32, x33, x34) -> f1_0_main_ConstantStackPush(x35, x36, x37) :|: 0 <= 0 Arcs: (1) -> (2) (2) -> (4), (5) (3) -> (2) (4) -> (3), (4), (5) (5) -> (3), (4), (5) (6) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Obligation: Termination digraph: Nodes: (1) f458_0_sort_GE(x, x1, x2) -> f543_0_sort_GE(x3, x4, x5) :|: 100 - x = x5 && 0 = x4 && x = x3 && x <= 99 && 0 <= x - 1 (2) f543_0_sort_GE(x6, x9, x10) -> f458_0_sort_GE(x11, x14, x15) :|: x6 + 1 = x11 && x10 <= x9 (3) f543_0_sort_GE(x16, x17, x18) -> f543_0_sort_GE(x19, x20, x21) :|: x17 <= 99 && x17 <= x18 - 1 && -1 <= x17 - 1 && x17 <= 98 && x22 <= x23 && 0 <= x16 - 1 && x16 = x19 && x17 + 1 = x20 && 100 - x16 = x21 (4) f543_0_sort_GE(x24, x25, x26) -> f543_0_sort_GE(x27, x28, x29) :|: x25 <= 99 && x25 <= x26 - 1 && -1 <= x25 - 1 && x25 <= 98 && 0 <= x24 - 1 && x30 <= x31 - 1 && x24 = x27 && x25 + 1 = x28 && 100 - x24 = x29 Arcs: (1) -> (3), (4) (2) -> (1) (3) -> (2), (3), (4) (4) -> (2), (3), (4) This digraph is fully evaluated! ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f543_0_sort_GE(x6:0, x9:0, x10:0) -> f543_0_sort_GE(x6:0 + 1, 0, 100 - (x6:0 + 1)) :|: x6:0 > -1 && x6:0 < 99 && x9:0 >= x10:0 f543_0_sort_GE(x16:0, x17:0, x18:0) -> f543_0_sort_GE(x16:0, x17:0 + 1, 100 - x16:0) :|: x23:0 >= x22:0 && x16:0 > 0 && x17:0 < 99 && x17:0 > -1 && x18:0 - 1 >= x17:0 && x17:0 < 100 f543_0_sort_GE(x24:0, x25:0, x26:0) -> f543_0_sort_GE(x24:0, x25:0 + 1, 100 - x24:0) :|: x24:0 > 0 && x31:0 - 1 >= x30:0 && x25:0 < 99 && x25:0 > -1 && x26:0 - 1 >= x25:0 && x25:0 < 100 ---------------------------------------- (7) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f543_0_sort_GE(INTEGER, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (8) Obligation: Rules: f543_0_sort_GE(x6:0, x9:0, x10:0) -> f543_0_sort_GE(c, c1, c2) :|: c2 = 100 - (x6:0 + 1) && (c1 = 0 && c = x6:0 + 1) && (x6:0 > -1 && x6:0 < 99 && x9:0 >= x10:0) f543_0_sort_GE(x16:0, x17:0, x18:0) -> f543_0_sort_GE(x16:0, c3, c4) :|: c4 = 100 - x16:0 && c3 = x17:0 + 1 && (x23:0 >= x22:0 && x16:0 > 0 && x17:0 < 99 && x17:0 > -1 && x18:0 - 1 >= x17:0 && x17:0 < 100) f543_0_sort_GE(x24:0, x25:0, x26:0) -> f543_0_sort_GE(x24:0, c5, c6) :|: c6 = 100 - x24:0 && c5 = x25:0 + 1 && (x24:0 > 0 && x31:0 - 1 >= x30:0 && x25:0 < 99 && x25:0 > -1 && x26:0 - 1 >= x25:0 && x25:0 < 100) ---------------------------------------- (9) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f543_0_sort_GE ] = -1*f543_0_sort_GE_1 The following rules are decreasing: f543_0_sort_GE(x6:0, x9:0, x10:0) -> f543_0_sort_GE(c, c1, c2) :|: c2 = 100 - (x6:0 + 1) && (c1 = 0 && c = x6:0 + 1) && (x6:0 > -1 && x6:0 < 99 && x9:0 >= x10:0) The following rules are bounded: f543_0_sort_GE(x6:0, x9:0, x10:0) -> f543_0_sort_GE(c, c1, c2) :|: c2 = 100 - (x6:0 + 1) && (c1 = 0 && c = x6:0 + 1) && (x6:0 > -1 && x6:0 < 99 && x9:0 >= x10:0) ---------------------------------------- (10) Obligation: Rules: f543_0_sort_GE(x16:0, x17:0, x18:0) -> f543_0_sort_GE(x16:0, c3, c4) :|: c4 = 100 - x16:0 && c3 = x17:0 + 1 && (x23:0 >= x22:0 && x16:0 > 0 && x17:0 < 99 && x17:0 > -1 && x18:0 - 1 >= x17:0 && x17:0 < 100) f543_0_sort_GE(x24:0, x25:0, x26:0) -> f543_0_sort_GE(x24:0, c5, c6) :|: c6 = 100 - x24:0 && c5 = x25:0 + 1 && (x24:0 > 0 && x31:0 - 1 >= x30:0 && x25:0 < 99 && x25:0 > -1 && x26:0 - 1 >= x25:0 && x25:0 < 100) ---------------------------------------- (11) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f543_0_sort_GE ] = -1*f543_0_sort_GE_2 The following rules are decreasing: f543_0_sort_GE(x16:0, x17:0, x18:0) -> f543_0_sort_GE(x16:0, c3, c4) :|: c4 = 100 - x16:0 && c3 = x17:0 + 1 && (x23:0 >= x22:0 && x16:0 > 0 && x17:0 < 99 && x17:0 > -1 && x18:0 - 1 >= x17:0 && x17:0 < 100) f543_0_sort_GE(x24:0, x25:0, x26:0) -> f543_0_sort_GE(x24:0, c5, c6) :|: c6 = 100 - x24:0 && c5 = x25:0 + 1 && (x24:0 > 0 && x31:0 - 1 >= x30:0 && x25:0 < 99 && x25:0 > -1 && x26:0 - 1 >= x25:0 && x25:0 < 100) The following rules are bounded: f543_0_sort_GE(x16:0, x17:0, x18:0) -> f543_0_sort_GE(x16:0, c3, c4) :|: c4 = 100 - x16:0 && c3 = x17:0 + 1 && (x23:0 >= x22:0 && x16:0 > 0 && x17:0 < 99 && x17:0 > -1 && x18:0 - 1 >= x17:0 && x17:0 < 100) f543_0_sort_GE(x24:0, x25:0, x26:0) -> f543_0_sort_GE(x24:0, c5, c6) :|: c6 = 100 - x24:0 && c5 = x25:0 + 1 && (x24:0 > 0 && x31:0 - 1 >= x30:0 && x25:0 < 99 && x25:0 > -1 && x26:0 - 1 >= x25:0 && x25:0 < 100) ---------------------------------------- (12) YES