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, 1407 ms] (4) IRSwT (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] (6) IRSwT (7) TempFilterProof [SOUND, 40 ms] (8) IntTRS (9) PolynomialOrderProcessor [EQUIVALENT, 16 ms] (10) YES ---------------------------------------- (0) Obligation: Rules: f1_0_main_Load(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) -> f1314_0_main_LT(arg1P, arg2P, arg3P, arg4P, arg5P, arg6P, arg7P, arg8P) :|: 0 = arg8P && 0 = arg7P && 0 = arg6P && 0 = arg5P && 0 = arg4P && 0 = arg3P && 0 = arg2P && 0 = arg2 && 0 <= arg1P - 1 && 0 <= arg1 - 1 && arg1P <= arg1 f1_0_main_Load(x, x1, x2, x3, x4, x5, x6, x7) -> f1314_0_main_LT(x8, x9, x10, x11, x12, x13, x14, x15) :|: 1 = x15 && 1 = x14 && 1 = x13 && 0 = x12 && 0 = x11 && 0 = x10 && 1 = x1 && 0 <= x8 - 1 && 0 <= x - 1 && -1 <= x9 - 1 && x8 <= x f1_0_main_Load(x16, x17, x18, x19, x20, x21, x22, x23) -> f1314_0_main_LT(x24, x25, x26, x27, x28, x29, x30, x31) :|: 2 = x31 && 2 = x30 && 2 = x29 && 0 = x28 && 0 = x27 && 2 = x17 && 0 <= x24 - 1 && 0 <= x16 - 1 && x24 <= x16 && -1 <= x26 - 1 && -1 <= x25 - 1 f1_0_main_Load(x32, x33, x34, x35, x36, x37, x38, x39) -> f1314_0_main_LT(x40, x41, x42, x43, x44, x45, x46, x47) :|: x33 = x47 && 3 = x46 && x33 = x45 && x43 = x44 && 0 <= x40 - 1 && 0 <= x32 - 1 && x40 <= x32 && -1 <= x42 - 1 && -1 <= x43 - 1 && 2 <= x33 - 1 && -1 <= x41 - 1 f1314_0_main_LT(x48, x49, x50, x51, x52, x53, x54, x55) -> f1314_0_main_LT(x56, x57, x58, x59, x60, x61, x62, x63) :|: x53 = x63 && x54 = x62 && x53 = x61 && x51 = x60 && x51 = x59 && 0 = x58 && 0 = x57 && x53 = x55 && x51 = x52 && 0 <= x56 - 1 && 0 <= x48 - 1 && x56 <= x48 && 3 * x50 - 2 * x49 <= -1 && 0 <= 3 * x50 && 0 <= 2 * x49 && x53 <= x54 && -1 <= x53 - 1 && -1 <= x51 - 1 f1314_0_main_LT(x64, x65, x66, x67, x68, x69, x70, x71) -> f1314_0_main_LT(x72, x73, x74, x75, x76, x77, x78, x79) :|: x69 = x79 && x70 + 1 = x78 && x69 = x77 && x67 - (0 - 2 * x73) = x76 && x67 - (0 - 2 * x73) = x75 && 0 = x74 && x69 = x71 && x67 = x68 && 0 <= x72 - 1 && 0 <= x64 - 1 && x72 <= x64 && 3 * x66 - 2 * x65 <= 0 - 2 * x73 - 1 && 0 <= 2 * x73 && 0 <= 3 * x66 && 0 <= 2 * x65 && x69 <= x70 + 1 && -1 <= x73 - 1 && x70 <= x69 - 1 && -1 <= x70 - 1 && -1 <= x69 - 1 && -1 <= x67 - 1 f1314_0_main_LT(x80, x81, x82, x83, x84, x85, x86, x87) -> f1314_0_main_LT(x88, x89, x90, x91, x92, x93, x94, x95) :|: x85 = x95 && x86 + 2 = x94 && x85 = x93 && x83 - (3 * x90 - 2 * x89) = x92 && x83 - (3 * x90 - 2 * x89) = x91 && x85 = x87 && x83 = x84 && 0 <= x88 - 1 && 0 <= x80 - 1 && x88 <= x80 && 3 * x82 - 2 * x81 <= 3 * x90 - 2 * x89 - 1 && 0 <= 3 * x90 && 0 <= 2 * x89 && 0 <= 3 * x82 && 0 <= 2 * x81 && -1 <= x90 - 1 && -1 <= x89 - 1 && -1 <= x86 - 1 && -1 <= x83 - 1 && x86 + 1 <= x85 - 1 && -1 <= x85 - 1 __init(x96, x97, x98, x99, x100, x101, x102, x103) -> f1_0_main_Load(x104, x105, x106, x107, x108, x109, x110, x111) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) ---------------------------------------- (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, arg4, arg5, arg6, arg7, arg8) -> f1314_0_main_LT(arg1P, arg2P, arg3P, arg4P, arg5P, arg6P, arg7P, arg8P) :|: 0 = arg8P && 0 = arg7P && 0 = arg6P && 0 = arg5P && 0 = arg4P && 0 = arg3P && 0 = arg2P && 0 = arg2 && 0 <= arg1P - 1 && 0 <= arg1 - 1 && arg1P <= arg1 f1_0_main_Load(x, x1, x2, x3, x4, x5, x6, x7) -> f1314_0_main_LT(x8, x9, x10, x11, x12, x13, x14, x15) :|: 1 = x15 && 1 = x14 && 1 = x13 && 0 = x12 && 0 = x11 && 0 = x10 && 1 = x1 && 0 <= x8 - 1 && 0 <= x - 1 && -1 <= x9 - 1 && x8 <= x f1_0_main_Load(x16, x17, x18, x19, x20, x21, x22, x23) -> f1314_0_main_LT(x24, x25, x26, x27, x28, x29, x30, x31) :|: 2 = x31 && 2 = x30 && 2 = x29 && 0 = x28 && 0 = x27 && 2 = x17 && 0 <= x24 - 1 && 0 <= x16 - 1 && x24 <= x16 && -1 <= x26 - 1 && -1 <= x25 - 1 f1_0_main_Load(x32, x33, x34, x35, x36, x37, x38, x39) -> f1314_0_main_LT(x40, x41, x42, x43, x44, x45, x46, x47) :|: x33 = x47 && 3 = x46 && x33 = x45 && x43 = x44 && 0 <= x40 - 1 && 0 <= x32 - 1 && x40 <= x32 && -1 <= x42 - 1 && -1 <= x43 - 1 && 2 <= x33 - 1 && -1 <= x41 - 1 f1314_0_main_LT(x48, x49, x50, x51, x52, x53, x54, x55) -> f1314_0_main_LT(x56, x57, x58, x59, x60, x61, x62, x63) :|: x53 = x63 && x54 = x62 && x53 = x61 && x51 = x60 && x51 = x59 && 0 = x58 && 0 = x57 && x53 = x55 && x51 = x52 && 0 <= x56 - 1 && 0 <= x48 - 1 && x56 <= x48 && 3 * x50 - 2 * x49 <= -1 && 0 <= 3 * x50 && 0 <= 2 * x49 && x53 <= x54 && -1 <= x53 - 1 && -1 <= x51 - 1 f1314_0_main_LT(x64, x65, x66, x67, x68, x69, x70, x71) -> f1314_0_main_LT(x72, x73, x74, x75, x76, x77, x78, x79) :|: x69 = x79 && x70 + 1 = x78 && x69 = x77 && x67 - (0 - 2 * x73) = x76 && x67 - (0 - 2 * x73) = x75 && 0 = x74 && x69 = x71 && x67 = x68 && 0 <= x72 - 1 && 0 <= x64 - 1 && x72 <= x64 && 3 * x66 - 2 * x65 <= 0 - 2 * x73 - 1 && 0 <= 2 * x73 && 0 <= 3 * x66 && 0 <= 2 * x65 && x69 <= x70 + 1 && -1 <= x73 - 1 && x70 <= x69 - 1 && -1 <= x70 - 1 && -1 <= x69 - 1 && -1 <= x67 - 1 f1314_0_main_LT(x80, x81, x82, x83, x84, x85, x86, x87) -> f1314_0_main_LT(x88, x89, x90, x91, x92, x93, x94, x95) :|: x85 = x95 && x86 + 2 = x94 && x85 = x93 && x83 - (3 * x90 - 2 * x89) = x92 && x83 - (3 * x90 - 2 * x89) = x91 && x85 = x87 && x83 = x84 && 0 <= x88 - 1 && 0 <= x80 - 1 && x88 <= x80 && 3 * x82 - 2 * x81 <= 3 * x90 - 2 * x89 - 1 && 0 <= 3 * x90 && 0 <= 2 * x89 && 0 <= 3 * x82 && 0 <= 2 * x81 && -1 <= x90 - 1 && -1 <= x89 - 1 && -1 <= x86 - 1 && -1 <= x83 - 1 && x86 + 1 <= x85 - 1 && -1 <= x85 - 1 __init(x96, x97, x98, x99, x100, x101, x102, x103) -> f1_0_main_Load(x104, x105, x106, x107, x108, x109, x110, x111) :|: 0 <= 0 Start term: __init(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) ---------------------------------------- (3) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1_0_main_Load(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) -> f1314_0_main_LT(arg1P, arg2P, arg3P, arg4P, arg5P, arg6P, arg7P, arg8P) :|: 0 = arg8P && 0 = arg7P && 0 = arg6P && 0 = arg5P && 0 = arg4P && 0 = arg3P && 0 = arg2P && 0 = arg2 && 0 <= arg1P - 1 && 0 <= arg1 - 1 && arg1P <= arg1 (2) f1_0_main_Load(x, x1, x2, x3, x4, x5, x6, x7) -> f1314_0_main_LT(x8, x9, x10, x11, x12, x13, x14, x15) :|: 1 = x15 && 1 = x14 && 1 = x13 && 0 = x12 && 0 = x11 && 0 = x10 && 1 = x1 && 0 <= x8 - 1 && 0 <= x - 1 && -1 <= x9 - 1 && x8 <= x (3) f1_0_main_Load(x16, x17, x18, x19, x20, x21, x22, x23) -> f1314_0_main_LT(x24, x25, x26, x27, x28, x29, x30, x31) :|: 2 = x31 && 2 = x30 && 2 = x29 && 0 = x28 && 0 = x27 && 2 = x17 && 0 <= x24 - 1 && 0 <= x16 - 1 && x24 <= x16 && -1 <= x26 - 1 && -1 <= x25 - 1 (4) f1_0_main_Load(x32, x33, x34, x35, x36, x37, x38, x39) -> f1314_0_main_LT(x40, x41, x42, x43, x44, x45, x46, x47) :|: x33 = x47 && 3 = x46 && x33 = x45 && x43 = x44 && 0 <= x40 - 1 && 0 <= x32 - 1 && x40 <= x32 && -1 <= x42 - 1 && -1 <= x43 - 1 && 2 <= x33 - 1 && -1 <= x41 - 1 (5) f1314_0_main_LT(x48, x49, x50, x51, x52, x53, x54, x55) -> f1314_0_main_LT(x56, x57, x58, x59, x60, x61, x62, x63) :|: x53 = x63 && x54 = x62 && x53 = x61 && x51 = x60 && x51 = x59 && 0 = x58 && 0 = x57 && x53 = x55 && x51 = x52 && 0 <= x56 - 1 && 0 <= x48 - 1 && x56 <= x48 && 3 * x50 - 2 * x49 <= -1 && 0 <= 3 * x50 && 0 <= 2 * x49 && x53 <= x54 && -1 <= x53 - 1 && -1 <= x51 - 1 (6) f1314_0_main_LT(x64, x65, x66, x67, x68, x69, x70, x71) -> f1314_0_main_LT(x72, x73, x74, x75, x76, x77, x78, x79) :|: x69 = x79 && x70 + 1 = x78 && x69 = x77 && x67 - (0 - 2 * x73) = x76 && x67 - (0 - 2 * x73) = x75 && 0 = x74 && x69 = x71 && x67 = x68 && 0 <= x72 - 1 && 0 <= x64 - 1 && x72 <= x64 && 3 * x66 - 2 * x65 <= 0 - 2 * x73 - 1 && 0 <= 2 * x73 && 0 <= 3 * x66 && 0 <= 2 * x65 && x69 <= x70 + 1 && -1 <= x73 - 1 && x70 <= x69 - 1 && -1 <= x70 - 1 && -1 <= x69 - 1 && -1 <= x67 - 1 (7) f1314_0_main_LT(x80, x81, x82, x83, x84, x85, x86, x87) -> f1314_0_main_LT(x88, x89, x90, x91, x92, x93, x94, x95) :|: x85 = x95 && x86 + 2 = x94 && x85 = x93 && x83 - (3 * x90 - 2 * x89) = x92 && x83 - (3 * x90 - 2 * x89) = x91 && x85 = x87 && x83 = x84 && 0 <= x88 - 1 && 0 <= x80 - 1 && x88 <= x80 && 3 * x82 - 2 * x81 <= 3 * x90 - 2 * x89 - 1 && 0 <= 3 * x90 && 0 <= 2 * x89 && 0 <= 3 * x82 && 0 <= 2 * x81 && -1 <= x90 - 1 && -1 <= x89 - 1 && -1 <= x86 - 1 && -1 <= x83 - 1 && x86 + 1 <= x85 - 1 && -1 <= x85 - 1 (8) __init(x96, x97, x98, x99, x100, x101, x102, x103) -> f1_0_main_Load(x104, x105, x106, x107, x108, x109, x110, x111) :|: 0 <= 0 Arcs: (2) -> (5) (3) -> (5) (4) -> (5), (6), (7) (6) -> (5) (7) -> (5), (6), (7) (8) -> (1), (2), (3), (4) This digraph is fully evaluated! ---------------------------------------- (4) Obligation: Termination digraph: Nodes: (1) f1314_0_main_LT(x80, x81, x82, x83, x84, x85, x86, x87) -> f1314_0_main_LT(x88, x89, x90, x91, x92, x93, x94, x95) :|: x85 = x95 && x86 + 2 = x94 && x85 = x93 && x83 - (3 * x90 - 2 * x89) = x92 && x83 - (3 * x90 - 2 * x89) = x91 && x85 = x87 && x83 = x84 && 0 <= x88 - 1 && 0 <= x80 - 1 && x88 <= x80 && 3 * x82 - 2 * x81 <= 3 * x90 - 2 * x89 - 1 && 0 <= 3 * x90 && 0 <= 2 * x89 && 0 <= 3 * x82 && 0 <= 2 * x81 && -1 <= x90 - 1 && -1 <= x89 - 1 && -1 <= x86 - 1 && -1 <= x83 - 1 && x86 + 1 <= x85 - 1 && -1 <= x85 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f1314_0_main_LT(x80:0, x81:0, x82:0, x83:0, x83:0, x85:0, x86:0, x85:0) -> f1314_0_main_LT(x88:0, x89:0, x90:0, x83:0 - (3 * x90:0 - 2 * x89:0), x83:0 - (3 * x90:0 - 2 * x89:0), x85:0, x86:0 + 2, x85:0) :|: x86:0 + 1 <= x85:0 - 1 && x85:0 > -1 && x83:0 > -1 && x86:0 > -1 && x89:0 > -1 && x90:0 > -1 && 2 * x81:0 >= 0 && 3 * x82:0 >= 0 && 2 * x89:0 >= 0 && 3 * x90:0 >= 0 && 3 * x90:0 - 2 * x89:0 - 1 >= 3 * x82:0 - 2 * x81:0 && x88:0 <= x80:0 && x88:0 > 0 && x80:0 > 0 ---------------------------------------- (7) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1314_0_main_LT(INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (8) Obligation: Rules: f1314_0_main_LT(x80:0, x81:0, x82:0, x83:0, x83:0, x85:0, x86:0, x85:0) -> f1314_0_main_LT(x88:0, x89:0, x90:0, c, c1, x85:0, c2, x85:0) :|: c2 = x86:0 + 2 && (c1 = x83:0 - (3 * x90:0 - 2 * x89:0) && c = x83:0 - (3 * x90:0 - 2 * x89:0)) && (x86:0 + 1 <= x85:0 - 1 && x85:0 > -1 && x83:0 > -1 && x86:0 > -1 && x89:0 > -1 && x90:0 > -1 && 2 * x81:0 >= 0 && 3 * x82:0 >= 0 && 2 * x89:0 >= 0 && 3 * x90:0 >= 0 && 3 * x90:0 - 2 * x89:0 - 1 >= 3 * x82:0 - 2 * x81:0 && x88:0 <= x80:0 && x88:0 > 0 && x80:0 > 0) ---------------------------------------- (9) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1314_0_main_LT(x, x1, x2, x3, x4, x5, x6, x7)] = -x6 + x7 The following rules are decreasing: f1314_0_main_LT(x80:0, x81:0, x82:0, x83:0, x83:0, x85:0, x86:0, x85:0) -> f1314_0_main_LT(x88:0, x89:0, x90:0, c, c1, x85:0, c2, x85:0) :|: c2 = x86:0 + 2 && (c1 = x83:0 - (3 * x90:0 - 2 * x89:0) && c = x83:0 - (3 * x90:0 - 2 * x89:0)) && (x86:0 + 1 <= x85:0 - 1 && x85:0 > -1 && x83:0 > -1 && x86:0 > -1 && x89:0 > -1 && x90:0 > -1 && 2 * x81:0 >= 0 && 3 * x82:0 >= 0 && 2 * x89:0 >= 0 && 3 * x90:0 >= 0 && 3 * x90:0 - 2 * x89:0 - 1 >= 3 * x82:0 - 2 * x81:0 && x88:0 <= x80:0 && x88:0 > 0 && x80:0 > 0) The following rules are bounded: f1314_0_main_LT(x80:0, x81:0, x82:0, x83:0, x83:0, x85:0, x86:0, x85:0) -> f1314_0_main_LT(x88:0, x89:0, x90:0, c, c1, x85:0, c2, x85:0) :|: c2 = x86:0 + 2 && (c1 = x83:0 - (3 * x90:0 - 2 * x89:0) && c = x83:0 - (3 * x90:0 - 2 * x89:0)) && (x86:0 + 1 <= x85:0 - 1 && x85:0 > -1 && x83:0 > -1 && x86:0 > -1 && x89:0 > -1 && x90:0 > -1 && 2 * x81:0 >= 0 && 3 * x82:0 >= 0 && 2 * x89:0 >= 0 && 3 * x90:0 >= 0 && 3 * x90:0 - 2 * x89:0 - 1 >= 3 * x82:0 - 2 * x81:0 && x88:0 <= x80:0 && x88:0 > 0 && x80:0 > 0) ---------------------------------------- (10) YES