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, 303 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IRSwT (8) FilterProof [EQUIVALENT, 0 ms] (9) IntTRS (10) IntTRSCompressionProof [EQUIVALENT, 0 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 0 ms] (13) YES (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) TempFilterProof [SOUND, 27 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 9 ms] (20) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_Load(arg1, arg2, arg3) -> f302_0_createList_GE(arg1P, arg2P, arg3P) :|: 1 = arg3P && arg2 = arg2P && 0 <= arg1 - 1 && 0 <= arg2 - 1 && -1 <= arg1P - 1 f1_0_main_Load(x, x1, x2) -> f502_0_main_InvokeMethod(x3, x4, x5) :|: -1 <= x6 - 1 && 0 <= x1 - 1 && x3 <= x && 0 <= x - 1 && 0 <= x3 - 1 && 2 <= x4 - 1 f1_0_main_Load(x7, x9, x10) -> f502_0_main_InvokeMethod(x11, x12, x13) :|: -1 <= x15 - 1 && 0 <= x9 - 1 && x11 <= x7 && x12 - 1 <= x7 && 0 <= x7 - 1 && 0 <= x11 - 1 && 1 <= x12 - 1 f302_0_createList_GE(x16, x17, x19) -> f302_0_createList_GE(x20, x21, x22) :|: x19 + 1 = x22 && x17 = x21 && x16 - 1 = x20 && x19 <= x17 - 1 && x16 - 1 <= x16 - 1 && 0 <= x19 - 1 && -1 <= x17 - 1 && -1 <= x16 - 1 f502_0_main_InvokeMethod(x23, x24, x25) -> f571_0_sumList_NONNULL(x26, x27, x28) :|: 0 <= x29 - 1 && 1 <= x25 - 1 && x26 <= x24 && x27 + 1 <= x24 && 0 <= x23 - 1 && 0 <= x24 - 1 && 0 <= x26 - 1 && -1 <= x27 - 1 && x25 = x28 f571_0_sumList_NONNULL(x30, x31, x32) -> f571_0_sumList_NONNULL(x33, x34, x35) :|: x32 = x35 && -1 <= x34 - 1 && 0 <= x33 - 1 && 0 <= x31 - 1 && 2 <= x30 - 1 && x34 + 1 <= x31 && x34 + 3 <= x30 && x33 <= x31 && 1 <= x32 - 1 && x33 + 2 <= x30 __init(x36, x37, x38) -> f1_0_main_Load(x39, x40, x41) :|: 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_Load(arg1, arg2, arg3) -> f302_0_createList_GE(arg1P, arg2P, arg3P) :|: 1 = arg3P && arg2 = arg2P && 0 <= arg1 - 1 && 0 <= arg2 - 1 && -1 <= arg1P - 1 f1_0_main_Load(x, x1, x2) -> f502_0_main_InvokeMethod(x3, x4, x5) :|: -1 <= x6 - 1 && 0 <= x1 - 1 && x3 <= x && 0 <= x - 1 && 0 <= x3 - 1 && 2 <= x4 - 1 f1_0_main_Load(x7, x9, x10) -> f502_0_main_InvokeMethod(x11, x12, x13) :|: -1 <= x15 - 1 && 0 <= x9 - 1 && x11 <= x7 && x12 - 1 <= x7 && 0 <= x7 - 1 && 0 <= x11 - 1 && 1 <= x12 - 1 f302_0_createList_GE(x16, x17, x19) -> f302_0_createList_GE(x20, x21, x22) :|: x19 + 1 = x22 && x17 = x21 && x16 - 1 = x20 && x19 <= x17 - 1 && x16 - 1 <= x16 - 1 && 0 <= x19 - 1 && -1 <= x17 - 1 && -1 <= x16 - 1 f502_0_main_InvokeMethod(x23, x24, x25) -> f571_0_sumList_NONNULL(x26, x27, x28) :|: 0 <= x29 - 1 && 1 <= x25 - 1 && x26 <= x24 && x27 + 1 <= x24 && 0 <= x23 - 1 && 0 <= x24 - 1 && 0 <= x26 - 1 && -1 <= x27 - 1 && x25 = x28 f571_0_sumList_NONNULL(x30, x31, x32) -> f571_0_sumList_NONNULL(x33, x34, x35) :|: x32 = x35 && -1 <= x34 - 1 && 0 <= x33 - 1 && 0 <= x31 - 1 && 2 <= x30 - 1 && x34 + 1 <= x31 && x34 + 3 <= x30 && x33 <= x31 && 1 <= x32 - 1 && x33 + 2 <= x30 __init(x36, x37, x38) -> f1_0_main_Load(x39, x40, x41) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1_0_main_Load(arg1, arg2, arg3) -> f302_0_createList_GE(arg1P, arg2P, arg3P) :|: 1 = arg3P && arg2 = arg2P && 0 <= arg1 - 1 && 0 <= arg2 - 1 && -1 <= arg1P - 1 (2) f1_0_main_Load(x, x1, x2) -> f502_0_main_InvokeMethod(x3, x4, x5) :|: -1 <= x6 - 1 && 0 <= x1 - 1 && x3 <= x && 0 <= x - 1 && 0 <= x3 - 1 && 2 <= x4 - 1 (3) f1_0_main_Load(x7, x9, x10) -> f502_0_main_InvokeMethod(x11, x12, x13) :|: -1 <= x15 - 1 && 0 <= x9 - 1 && x11 <= x7 && x12 - 1 <= x7 && 0 <= x7 - 1 && 0 <= x11 - 1 && 1 <= x12 - 1 (4) f302_0_createList_GE(x16, x17, x19) -> f302_0_createList_GE(x20, x21, x22) :|: x19 + 1 = x22 && x17 = x21 && x16 - 1 = x20 && x19 <= x17 - 1 && x16 - 1 <= x16 - 1 && 0 <= x19 - 1 && -1 <= x17 - 1 && -1 <= x16 - 1 (5) f502_0_main_InvokeMethod(x23, x24, x25) -> f571_0_sumList_NONNULL(x26, x27, x28) :|: 0 <= x29 - 1 && 1 <= x25 - 1 && x26 <= x24 && x27 + 1 <= x24 && 0 <= x23 - 1 && 0 <= x24 - 1 && 0 <= x26 - 1 && -1 <= x27 - 1 && x25 = x28 (6) f571_0_sumList_NONNULL(x30, x31, x32) -> f571_0_sumList_NONNULL(x33, x34, x35) :|: x32 = x35 && -1 <= x34 - 1 && 0 <= x33 - 1 && 0 <= x31 - 1 && 2 <= x30 - 1 && x34 + 1 <= x31 && x34 + 3 <= x30 && x33 <= x31 && 1 <= x32 - 1 && x33 + 2 <= x30 (7) __init(x36, x37, x38) -> f1_0_main_Load(x39, x40, x41) :|: 0 <= 0 Arcs: (1) -> (4) (2) -> (5) (3) -> (5) (4) -> (4) (5) -> (6) (6) -> (6) (7) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) f571_0_sumList_NONNULL(x30, x31, x32) -> f571_0_sumList_NONNULL(x33, x34, x35) :|: x32 = x35 && -1 <= x34 - 1 && 0 <= x33 - 1 && 0 <= x31 - 1 && 2 <= x30 - 1 && x34 + 1 <= x31 && x34 + 3 <= x30 && x33 <= x31 && 1 <= x32 - 1 && x33 + 2 <= x30 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f571_0_sumList_NONNULL(x30:0, x31:0, x32:0) -> f571_0_sumList_NONNULL(x33:0, x34:0, x32:0) :|: x32:0 > 1 && x33:0 + 2 <= x30:0 && x33:0 <= x31:0 && x34:0 + 3 <= x30:0 && x34:0 + 1 <= x31:0 && x30:0 > 2 && x31:0 > 0 && x34:0 > -1 && x33:0 > 0 ---------------------------------------- (8) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f571_0_sumList_NONNULL(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (9) Obligation: Rules: f571_0_sumList_NONNULL(x30:0, x31:0, x32:0) -> f571_0_sumList_NONNULL(x33:0, x34:0, x32:0) :|: x32:0 > 1 && x33:0 + 2 <= x30:0 && x33:0 <= x31:0 && x34:0 + 3 <= x30:0 && x34:0 + 1 <= x31:0 && x30:0 > 2 && x31:0 > 0 && x34:0 > -1 && x33:0 > 0 ---------------------------------------- (10) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (11) Obligation: Rules: f571_0_sumList_NONNULL(x30:0:0, x31:0:0, x32:0:0) -> f571_0_sumList_NONNULL(x33:0:0, x34:0:0, x32:0:0) :|: x34:0:0 > -1 && x33:0:0 > 0 && x31:0:0 > 0 && x30:0:0 > 2 && x34:0:0 + 1 <= x31:0:0 && x34:0:0 + 3 <= x30:0:0 && x33:0:0 <= x31:0:0 && x33:0:0 + 2 <= x30:0:0 && x32:0:0 > 1 ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f571_0_sumList_NONNULL ] = 1/2*f571_0_sumList_NONNULL_1 The following rules are decreasing: f571_0_sumList_NONNULL(x30:0:0, x31:0:0, x32:0:0) -> f571_0_sumList_NONNULL(x33:0:0, x34:0:0, x32:0:0) :|: x34:0:0 > -1 && x33:0:0 > 0 && x31:0:0 > 0 && x30:0:0 > 2 && x34:0:0 + 1 <= x31:0:0 && x34:0:0 + 3 <= x30:0:0 && x33:0:0 <= x31:0:0 && x33:0:0 + 2 <= x30:0:0 && x32:0:0 > 1 The following rules are bounded: f571_0_sumList_NONNULL(x30:0:0, x31:0:0, x32:0:0) -> f571_0_sumList_NONNULL(x33:0:0, x34:0:0, x32:0:0) :|: x34:0:0 > -1 && x33:0:0 > 0 && x31:0:0 > 0 && x30:0:0 > 2 && x34:0:0 + 1 <= x31:0:0 && x34:0:0 + 3 <= x30:0:0 && x33:0:0 <= x31:0:0 && x33:0:0 + 2 <= x30:0:0 && x32:0:0 > 1 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f302_0_createList_GE(x16, x17, x19) -> f302_0_createList_GE(x20, x21, x22) :|: x19 + 1 = x22 && x17 = x21 && x16 - 1 = x20 && x19 <= x17 - 1 && x16 - 1 <= x16 - 1 && 0 <= x19 - 1 && -1 <= x17 - 1 && -1 <= x16 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f302_0_createList_GE(x16:0, x17:0, x19:0) -> f302_0_createList_GE(x16:0 - 1, x17:0, x19:0 + 1) :|: x17:0 > -1 && x16:0 > -1 && x19:0 <= x17:0 - 1 && x19:0 > 0 ---------------------------------------- (17) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f302_0_createList_GE(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (18) Obligation: Rules: f302_0_createList_GE(x16:0, x17:0, x19:0) -> f302_0_createList_GE(c, x17:0, c1) :|: c1 = x19:0 + 1 && c = x16:0 - 1 && (x17:0 > -1 && x16:0 > -1 && x19:0 <= x17:0 - 1 && x19:0 > 0) ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f302_0_createList_GE ] = f302_0_createList_GE_2 + -1*f302_0_createList_GE_3 The following rules are decreasing: f302_0_createList_GE(x16:0, x17:0, x19:0) -> f302_0_createList_GE(c, x17:0, c1) :|: c1 = x19:0 + 1 && c = x16:0 - 1 && (x17:0 > -1 && x16:0 > -1 && x19:0 <= x17:0 - 1 && x19:0 > 0) The following rules are bounded: f302_0_createList_GE(x16:0, x17:0, x19:0) -> f302_0_createList_GE(c, x17:0, c1) :|: c1 = x19:0 + 1 && c = x16:0 - 1 && (x17:0 > -1 && x16:0 > -1 && x19:0 <= x17:0 - 1 && x19:0 > 0) ---------------------------------------- (20) YES