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, 352 ms] (4) AND (5) IRSwT (6) IntTRSCompressionProof [EQUIVALENT, 0 ms] (7) IRSwT (8) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (9) IRSwT (10) TempFilterProof [SOUND, 23 ms] (11) IntTRS (12) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (13) YES (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (18) IRSwT (19) TempFilterProof [SOUND, 5 ms] (20) IntTRS (21) RankingReductionPairProof [EQUIVALENT, 0 ms] (22) YES (23) IRSwT (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] (25) IRSwT (26) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (27) IRSwT (28) TempFilterProof [SOUND, 4 ms] (29) IntTRS (30) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (31) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_Load(arg1, arg2, arg3) -> f127_0_times_NE(arg1P, arg2P, arg3P) :|: 0 <= arg1 - 1 && -1 <= arg1P - 1 && 1 <= arg2 - 1 && -1 <= arg2P - 1 f127_0_times_NE(x, x1, x2) -> f127_0_times_NE(x3, x4, x5) :|: x1 - 1 = x4 && x = x3 && x1 - 1 <= x1 - 1 && 0 <= x1 - 1 f127_0_times_NE(x6, x7, x8) -> f469_0_times_InvokeMethod(x9, x10, x11) :|: x6 = x11 && 0 = x10 && 1 = x9 && 1 = x7 f127_0_times_NE(x12, x13, x14) -> f469_0_times_InvokeMethod(x15, x16, x17) :|: 0 = x17 && 0 = x16 && x13 = x15 && 0 = x12 && x13 - 1 <= x13 - 1 && 0 <= x13 - 1 f127_0_times_NE(x18, x19, x20) -> f469_0_times_InvokeMethod(x21, x22, x23) :|: x18 = x23 && x19 = x21 && x19 - 1 <= x19 - 1 && 0 <= x19 - 1 f127_0_times_NE(x24, x25, x26) -> f469_0_times_InvokeMethod(x27, x28, x29) :|: 0 = x29 && x25 = x27 && 0 = x24 && x25 - 1 <= x25 - 1 && 0 <= x25 - 1 f218_0_times_Return(x30, x31, x32) -> f469_0_times_InvokeMethod(x33, x34, x35) :|: x31 = x35 && x32 = x34 && x30 = x33 f469_0_times_InvokeMethod(x36, x37, x38) -> f484_0_plus_LE(x39, x40, x41) :|: x38 = x40 && x37 = x39 && 0 <= x36 - 1 f484_0_plus_LE(x42, x43, x44) -> f484_0_plus_LE(x45, x46, x47) :|: x43 - 1 = x46 && x42 = x45 && x43 - 1 <= x43 - 1 && 0 <= x43 - 1 f484_0_plus_LE(x48, x49, x50) -> f484_0_plus_LE(x51, x52, x53) :|: x49 = x52 && x48 - 1 = x51 && 0 <= x48 - 1 && x48 - 1 <= x48 - 1 && x49 <= 0 __init(x54, x55, x56) -> f1_0_main_Load(x57, x58, x59) :|: 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) -> f127_0_times_NE(arg1P, arg2P, arg3P) :|: 0 <= arg1 - 1 && -1 <= arg1P - 1 && 1 <= arg2 - 1 && -1 <= arg2P - 1 f127_0_times_NE(x, x1, x2) -> f127_0_times_NE(x3, x4, x5) :|: x1 - 1 = x4 && x = x3 && x1 - 1 <= x1 - 1 && 0 <= x1 - 1 f127_0_times_NE(x6, x7, x8) -> f469_0_times_InvokeMethod(x9, x10, x11) :|: x6 = x11 && 0 = x10 && 1 = x9 && 1 = x7 f127_0_times_NE(x12, x13, x14) -> f469_0_times_InvokeMethod(x15, x16, x17) :|: 0 = x17 && 0 = x16 && x13 = x15 && 0 = x12 && x13 - 1 <= x13 - 1 && 0 <= x13 - 1 f127_0_times_NE(x18, x19, x20) -> f469_0_times_InvokeMethod(x21, x22, x23) :|: x18 = x23 && x19 = x21 && x19 - 1 <= x19 - 1 && 0 <= x19 - 1 f127_0_times_NE(x24, x25, x26) -> f469_0_times_InvokeMethod(x27, x28, x29) :|: 0 = x29 && x25 = x27 && 0 = x24 && x25 - 1 <= x25 - 1 && 0 <= x25 - 1 f218_0_times_Return(x30, x31, x32) -> f469_0_times_InvokeMethod(x33, x34, x35) :|: x31 = x35 && x32 = x34 && x30 = x33 f469_0_times_InvokeMethod(x36, x37, x38) -> f484_0_plus_LE(x39, x40, x41) :|: x38 = x40 && x37 = x39 && 0 <= x36 - 1 f484_0_plus_LE(x42, x43, x44) -> f484_0_plus_LE(x45, x46, x47) :|: x43 - 1 = x46 && x42 = x45 && x43 - 1 <= x43 - 1 && 0 <= x43 - 1 f484_0_plus_LE(x48, x49, x50) -> f484_0_plus_LE(x51, x52, x53) :|: x49 = x52 && x48 - 1 = x51 && 0 <= x48 - 1 && x48 - 1 <= x48 - 1 && x49 <= 0 __init(x54, x55, x56) -> f1_0_main_Load(x57, x58, x59) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1_0_main_Load(arg1, arg2, arg3) -> f127_0_times_NE(arg1P, arg2P, arg3P) :|: 0 <= arg1 - 1 && -1 <= arg1P - 1 && 1 <= arg2 - 1 && -1 <= arg2P - 1 (2) f127_0_times_NE(x, x1, x2) -> f127_0_times_NE(x3, x4, x5) :|: x1 - 1 = x4 && x = x3 && x1 - 1 <= x1 - 1 && 0 <= x1 - 1 (3) f127_0_times_NE(x6, x7, x8) -> f469_0_times_InvokeMethod(x9, x10, x11) :|: x6 = x11 && 0 = x10 && 1 = x9 && 1 = x7 (4) f127_0_times_NE(x12, x13, x14) -> f469_0_times_InvokeMethod(x15, x16, x17) :|: 0 = x17 && 0 = x16 && x13 = x15 && 0 = x12 && x13 - 1 <= x13 - 1 && 0 <= x13 - 1 (5) f127_0_times_NE(x18, x19, x20) -> f469_0_times_InvokeMethod(x21, x22, x23) :|: x18 = x23 && x19 = x21 && x19 - 1 <= x19 - 1 && 0 <= x19 - 1 (6) f127_0_times_NE(x24, x25, x26) -> f469_0_times_InvokeMethod(x27, x28, x29) :|: 0 = x29 && x25 = x27 && 0 = x24 && x25 - 1 <= x25 - 1 && 0 <= x25 - 1 (7) f218_0_times_Return(x30, x31, x32) -> f469_0_times_InvokeMethod(x33, x34, x35) :|: x31 = x35 && x32 = x34 && x30 = x33 (8) f469_0_times_InvokeMethod(x36, x37, x38) -> f484_0_plus_LE(x39, x40, x41) :|: x38 = x40 && x37 = x39 && 0 <= x36 - 1 (9) f484_0_plus_LE(x42, x43, x44) -> f484_0_plus_LE(x45, x46, x47) :|: x43 - 1 = x46 && x42 = x45 && x43 - 1 <= x43 - 1 && 0 <= x43 - 1 (10) f484_0_plus_LE(x48, x49, x50) -> f484_0_plus_LE(x51, x52, x53) :|: x49 = x52 && x48 - 1 = x51 && 0 <= x48 - 1 && x48 - 1 <= x48 - 1 && x49 <= 0 (11) __init(x54, x55, x56) -> f1_0_main_Load(x57, x58, x59) :|: 0 <= 0 Arcs: (1) -> (2), (3), (4), (5), (6) (2) -> (2), (3), (4), (5), (6) (3) -> (8) (4) -> (8) (5) -> (8) (6) -> (8) (7) -> (8) (8) -> (9), (10) (9) -> (9), (10) (10) -> (10) (11) -> (1) This digraph is fully evaluated! ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Termination digraph: Nodes: (1) f127_0_times_NE(x, x1, x2) -> f127_0_times_NE(x3, x4, x5) :|: x1 - 1 = x4 && x = x3 && x1 - 1 <= x1 - 1 && 0 <= x1 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (6) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (7) Obligation: Rules: f127_0_times_NE(x3:0, x1:0, x2:0) -> f127_0_times_NE(x3:0, x1:0 - 1, x5:0) :|: x1:0 > 0 ---------------------------------------- (8) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f127_0_times_NE(x1, x2, x3) -> f127_0_times_NE(x2) ---------------------------------------- (9) Obligation: Rules: f127_0_times_NE(x1:0) -> f127_0_times_NE(x1:0 - 1) :|: x1:0 > 0 ---------------------------------------- (10) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f127_0_times_NE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (11) Obligation: Rules: f127_0_times_NE(x1:0) -> f127_0_times_NE(c) :|: c = x1:0 - 1 && x1:0 > 0 ---------------------------------------- (12) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f127_0_times_NE(x)] = x The following rules are decreasing: f127_0_times_NE(x1:0) -> f127_0_times_NE(c) :|: c = x1:0 - 1 && x1:0 > 0 The following rules are bounded: f127_0_times_NE(x1:0) -> f127_0_times_NE(c) :|: c = x1:0 - 1 && x1:0 > 0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f484_0_plus_LE(x42, x43, x44) -> f484_0_plus_LE(x45, x46, x47) :|: x43 - 1 = x46 && x42 = x45 && x43 - 1 <= x43 - 1 && 0 <= x43 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f484_0_plus_LE(x42:0, x43:0, x44:0) -> f484_0_plus_LE(x42:0, x43:0 - 1, x47:0) :|: x43:0 > 0 ---------------------------------------- (17) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f484_0_plus_LE(x1, x2, x3) -> f484_0_plus_LE(x2) ---------------------------------------- (18) Obligation: Rules: f484_0_plus_LE(x43:0) -> f484_0_plus_LE(x43:0 - 1) :|: x43:0 > 0 ---------------------------------------- (19) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f484_0_plus_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (20) Obligation: Rules: f484_0_plus_LE(x43:0) -> f484_0_plus_LE(c) :|: c = x43:0 - 1 && x43:0 > 0 ---------------------------------------- (21) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f484_0_plus_LE ] = f484_0_plus_LE_1 The following rules are decreasing: f484_0_plus_LE(x43:0) -> f484_0_plus_LE(c) :|: c = x43:0 - 1 && x43:0 > 0 The following rules are bounded: f484_0_plus_LE(x43:0) -> f484_0_plus_LE(c) :|: c = x43:0 - 1 && x43:0 > 0 ---------------------------------------- (22) YES ---------------------------------------- (23) Obligation: Termination digraph: Nodes: (1) f484_0_plus_LE(x48, x49, x50) -> f484_0_plus_LE(x51, x52, x53) :|: x49 = x52 && x48 - 1 = x51 && 0 <= x48 - 1 && x48 - 1 <= x48 - 1 && x49 <= 0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f484_0_plus_LE(x48:0, x49:0, x50:0) -> f484_0_plus_LE(x48:0 - 1, x49:0, x53:0) :|: x49:0 < 1 && x48:0 > 0 ---------------------------------------- (26) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f484_0_plus_LE(x1, x2, x3) -> f484_0_plus_LE(x1, x2) ---------------------------------------- (27) Obligation: Rules: f484_0_plus_LE(x48:0, x49:0) -> f484_0_plus_LE(x48:0 - 1, x49:0) :|: x49:0 < 1 && x48:0 > 0 ---------------------------------------- (28) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f484_0_plus_LE(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (29) Obligation: Rules: f484_0_plus_LE(x48:0, x49:0) -> f484_0_plus_LE(c, x49:0) :|: c = x48:0 - 1 && (x49:0 < 1 && x48:0 > 0) ---------------------------------------- (30) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f484_0_plus_LE(x, x1)] = x The following rules are decreasing: f484_0_plus_LE(x48:0, x49:0) -> f484_0_plus_LE(c, x49:0) :|: c = x48:0 - 1 && (x49:0 < 1 && x48:0 > 0) The following rules are bounded: f484_0_plus_LE(x48:0, x49:0) -> f484_0_plus_LE(c, x49:0) :|: c = x48:0 - 1 && (x49:0 < 1 && x48:0 > 0) ---------------------------------------- (31) YES