/* Global constraint element_greatereq in Picat. From Global Constraint Catalogue http://www.emn.fr/x-info/sdemasse/gccat/Celement_lesseq.html """ Constraint element_lesseq(ITEM,TABLE) ... Purpose ITEM.value is less than or equal to one of the entries (i.e., the value attribute) of the table TABLE. Example ( , < index-1 value-6, index-2 value-9, index-3 value-2, index-4 value-9 > ) The element_lesseq constraint holds since ITEM[1].value=1 is less than or equal to TABLE [ITEM[1].index].value=TABLE[3].value=2. """ This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import cp. main => go. go ?=> N = 4, ElementTable = new_list(N), ElementTable :: 1..9, Item :: 0..10, ElementTable = [6,9,2,9], Item = 1, % Item = 10, % this is false element_lesseq(Item, ElementTable), Vars = ElementTable ++ [Item], solve(Vars), println(elementTable=ElementTable), println(item=Item), fail, nl. go => true. element_lesseq(Item, ElementTable) => sum([Item #<= ElementTable[I] : I in 1..ElementTable.len ]) #>= 1.