{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-} import Control.CP.FD.Example model :: ExampleMinModel () model () = do let c = board let numNodes = c!0 numEdges = c!1 edgePos = slice c ((cte 2) @.. (1+numEdges)) edge i = slice c ((2+numEdges+((i@=0) @? (cte 0,edgePos!(i-1)))) @.. (1+numEdges+(edgePos!i))) exists $ \numColors -> do exists $ \colors -> do numColors @: (cte 0,numNodes) size colors @= numNodes colors `allin` (cte 0,numColors) loopall (0,(size (edge 0)-1)) $ \i -> colors!((edge 0)!i) @= (size (edge 0)-1-i) loopall (1,numEdges-1) $ allDiffD . slice colors . edge return (numColors,colors) main = example_min_main_void model {- [numNodes,numEdges,[cumul. clique sizes],[clique elems]] 0--1 | | 2--3 4,4,2,4,6,8,0,1,1,3,3,2,2,0 0-1 / \ 4-----2 \ / \3/ 5,6,2,4,6,8,10,12,0,1,1,2,2,3,3,4,4,0,2,4 -} board = list $ [ 200,367, 30,60,85,110,135,160,185,210,235,260,285,305,325,345,365,385,405,425,445,465,485,505,525,545,565,585,600,615,630,645,660,675,690,705,720,735,750,765,780,795,810,825,840,855,870,885,900,910,920,930,940,950,955,960,965,970,975,980,985,990,995,1000,1005,1010,1015,1020,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625, 6,11,14,25,40,42,48,53,61,76,80,87,89,92,108,115,120,131,132,137,145,159,162,163,164,168,172,173,176,182, 3,15,16,31,34,35,37,38,49,58,67,78,86,91,100,110,114,123,129,132,133,140,143,154,167,168,174,175,193,197, 3,10,33,38,43,45,48,51,65,66,82,88,90,93,94,103,107,128,131,141,152,155,168,185,199, 0,4,7,26,28,33,36,58,61,72,79,81,90,99,105,114,115,124,135,152,159,161,173,181,192, 12,15,28,39,43,44,45,66,83,84,85,99,102,108,112,115,120,126,131,152,157,163,171,182,183, 13,14,15,38,55,66,76,78,87,91,95,99,109,110,125,130,134,137,148,153,159,169,181,185,195, 3,4,31,35,41,42,57,60,65,66,72,74,84,86,90,91,94,96,110,139,140,141,165,179,199, 0,4,5,9,28,31,42,49,54,63,65,72,74,75,76,82,91,99,107,109,140,147,154,169,182, 4,5,10,17,41,43,48,58,65,85,92,97,107,112,114,129,131,146,150,153,158,169,176,184,191, 4,8,15,16,20,21,37,55,68,84,87,104,109,112,117,119,122,123,126,133,142,164,167,180,195, 5,6,10,11,28,30,43,46,53,60,66,79,82,105,114,116,119,124,127,147,157,171,184,195,196, 15,16,30,35,36,56,66,78,81,84,99,126,128,129,138,151,152,153,166,190, 5,21,23,29,39,40,49,69,88,114,122,127,128,142,148,155,161,171,188,190, 0,3,15,23,31,41,57,60,69,76,89,107,109,128,153,155,161,169,174,183, 9,33,43,61,64,69,85,98,100,101,114,120,138,144,172,182,184,187,188,198, 4,6,8,10,23,27,45,57,66,68,71,93,110,122,139,146,150,155,156,188, 4,14,18,22,63,77,78,83,94,98,104,114,150,166,172,177,183,186,196,199, 22,35,46,47,63,64,70,78,87,99,102,112,116,119,125,131,152,165,174,186, 1,3,13,15,19,26,46,51,65,73,76,110,114,149,152,163,166,170,178,186, 9,29,33,40,50,54,102,105,111,112,119,120,124,128,136,138,144,175,190,199, 39,75,79,102,106,112,123,125,138,145,154,155,159,162,165,168,175,181,189,196, 0,11,12,23,42,63,68,71,79,83,89,98,113,117,121,141,156,176,177,193, 10,17,31,56,77,89,102,115,116,117,118,120,136,157,163,168,172,182,193,196, 9,34,35,43,44,57,60,64,79,87,88,94,103,133,156,157,166,171,174,189, 13,21,22,31,41,45,66,67,79,86,112,116,119,146,160,171,175,181,192,195, 11,24,26,45,57,91,99,102,122,123,135,141,144,146,154,156,167,191,194,199, 17,44,53,61,82,90,95,103,107,122,124,145,169,186,190, 2,14,26,37,58,61,75,95,103,109,115,116,141,154,199, 5,13,21,28,61,64,65,73,105,115,119,132,148,154,185, 10,20,38,45,61,75,109,111,115,143,150,157,163,179,186, 9,45,48,49,51,52,57,64,70,128,158,163,182,183,192, 47,55,57,64,79,80,105,131,152,163,172,180,186,190,197, 16,36,69,84,99,113,118,121,126,137,160,162,165,177,196, 16,44,50,53,54,65,69,80,96,112,125,139,150,153,193, 6,54,72,76,86,95,96,144,145,148,151,164,168,180,183, 10,18,19,37,65,85,90,104,112,128,147,158,164,192,198, 20,21,36,50,53,74,90,96,99,124,129,140,163,171,183, 13,20,27,53,65,77,86,98,110,125,133,139,147,188,196, 23,41,43,49,58,74,77,86,111,126,150,168,173,185,189, 11,35,62,89,125,132,134,141,149,163,166,167,171,194,196, 14,28,30,52,114,115,122,125,132,135,172,177,179,181,195, 0,8,9,20,23,53,77,93,121,136,141,147,150,191,199, 3,21,47,49,91,102,106,113,124,136,140,143,177,178,194, 44,46,52,53,68,82,89,90,120,128,144,147,175,178,192, 8,16,19,21,67,72,79,82,86,90,115,116,149,152,199, 12,30,78,80,97,120,122,123,143,146,151,165,173,177,178, 9,19,39,46,91,109,128,130,131,146,148,150,178,185,198, 29,44,69,74,96,115,122,126,189,199, 22,42,52,53,97,113,146,151,160,195, 19,20,32,77,81,133,134,138,147,177, 0,4,56,59,107,109,144,149,158,167, 6,69,99,104,110,114,118,134,152,172, 25,76,126,140,143, 4,54,67,116,142, 47,52,124,151,192, 32,55,61,64,73, 11,65,128,134,190, 45,48,63,131,139, 34,55,82,108,151, 24,34,54,112,156, 12,47,72,148,163, 74,126,145,162,170, 73,78,104,175,192, 19,83,127,130,166, 20,90,98,137,165, 22,24,29,49,132, 82,92,116,134,184, 160,184, 192,199, 0,129, 20,80, 8,29, 93,171, 101,165, 124,193, 2,100, 66,173, 151,191, 164,187, 3,130, 118,176, 121,184, 25,106, 159,193, 121,123, 5,62, 97,101, 6,143, 123,163, 19,125, 17,108, 122,168, 181,184, 25,41, 62,70, 29,103, 48,67, 46,160, 79,170, 143,152, 38,184, 2,40, 191,195, 7,196, 62,199, 76,141, 82,166, 36,80, 51,189, 13,97, 3,192, 90,180, 47,176, 13,172, 92,121, 50,64, 65,113, 108,123, 26,106, 34,153, 90,123, 34,39, 116,178, 22,179, 50,61, 84,105, 84,93, 19,108, 29,59, 63,185, 119,129, 50,177, 80,194, 13,36, 46,56, 38,144, 82,193, 72,93, 49,95, 42,155, 117,140, 109,189, 19,35, 31,125, 118,191, 163,169, 40,167, 91,127, 3,121, 124,149, 40,174, 30,175, 19,132, 18,165, 34,93, 37,63, 10,55, 88,95, 76,122, 7,91, 25,141, 29,173, 139,173, 8,130, 110,158, 81,174, 113,114, 95,182, 136,149, 5,199, 56,106, 36,120, 133,187, 111,172, 19,34, 96,197, 32,108, 27,63, 50,188, 20,116, 50,118, 10,50, 24,172, 86,138, 35,50, 141,153, 98,132, 70,143, 1,97, 8,160, 37,170, 4,73, 1,94, 88,146, 59,61, 104,156, 62,172, 117,139, 66,189, 33,134, 122,169, 95,163, 95,152, 83,140, 110,189, 147,159, 22,147, 59,173, 30,41, 33,183, 181,187, 88,105, 93,151, 6,130, 24,30, 84,130, 72,120, 118,159, 147,189, 122,149, 24,175, 39,169, 164,186, 93,187, 13,156, 119,176, 73,91, 174,178, 71,198, 10,134, 30,101, 79,93, 180,187, 1,50, 51,59, 18,169, 73,153, 1,198, 137,154, 61,106, 80,113, 48,142, 100,111, 97,133, 82,97, 136,170, 53,134, 65,177, 7,80, 73,137, 6,70, 115,166, 72,196, 40,109, 91,101, 2,177, 120,185, 55,65, 72,166, 104,165, 173,187, 54,71, 3,61, 52,56, 120,149, 64,72, 42,43, 75,185, 62,68, 108,147, 30,111, 25,58, 39,93, 75,117, 61,194, 140,153, 80,121, 93,102, 9,177, 7,163, 17,70, 5,168, 63,178, 74,160, 148,158, 9,84, 30,76, 63,80, 68,99, 20,152, 7,182, 7,22, 71,134, 32,100, 107,164, 23,62, 5,98, 130,192, 65,144, 139,161, 24,124, 31,47, 29,140, 61,153, 53,109, 20,26, 143,160, 47,195, 171,172, 185,193, 128,173, 38,96, 14,171, 176,199, 111,139, 21,54, 80,171, 116,185, 184,199, 37,88, 62,133, 3,150, 48,109, 46,176, 24,178, 59,172, 180,198, 64,109, 110,111, 101,146, 66,164, 5,117, 144,179, 71,126, 166,169, 107,151, 46,85, 106,139, 27,153, 97,148, 68,185, 17,179, 10,142, 168,169, 4,46, 113,152, 52,176, 6,38, 22,48, 20,120, 2,84, 71,85, 91,116, 0,189, 116,197, 142,147, 33,165, 86,198, 146,149, 152,187, 44,62, 48,175, 56,150, 63,161, 71,164, 17,171, 19,66 ]