package Ġcombo . model Ċ Ċ import Ġcombo . math . permutation Ċ import Ġcombo . sat . Problem Ċ import Ġcombo . sat . constraints . Con junction Ċ import Ġcombo . sat . constraints . Relation Ċ import Ġcombo . util . collection Of Ċ import Ġkotlin . random . Random Ċ Ċ object ĠTest Models Ġ{ ĊĊĠĠĠ Ġval ĠMODE LS : ĠList < Model > Ġby Ġlazy Ġ{ ĠlistOf ( MODEL 1 , ĠMODEL 2 , ĠMODEL 3 , ĠMODEL 4 , ĠMODEL 5 , ĠMODEL 6 , ĠMODEL 7 ) Ġ} ĊĠĠĠ Ġval ĠL ARGE _ MODE LS : ĠList < Model > Ġby Ġlazy Ġ{ ĠlistOf ( LARGE 1 , ĠL ARGE 2 , ĠL ARGE 3 ) Ġ} ĊĠĠĠ Ġval ĠUNS AT _ MODE LS : ĠList < Model > Ġby Ġlazy Ġ{ ĠlistOf ( UN SAT 1 , ĠUNS AT 2 , ĠUNS AT 3 , ĠUNS AT 4 ) Ġ} ĊĠĠĠ Ġval ĠNUM ERIC _ MODE LS : ĠList < Model > Ġby Ġlazy Ġ{ ĠlistOf ( NUMERIC 1 , ĠNUM ERIC 2 , ĠNUM ERIC 3 ) Ġ} ĊĠĠĠ Ġval ĠC SP _ MODE LS : ĠList < Model > Ġby Ġlazy Ġ{ ĠlistOf ( C SP 1 ) Ġ} ĊĠĠĠ Ġval ĠT IN Y _ MODE LS : ĠList < Model > Ġby Ġlazy Ġ{ ĠlistOf ( MODEL 2 , ĠMODEL 3 ) Ġ} ĊĊĠĠĠ Ġval ĠS AT _ PRO BLE MS : ĠList < Problem > Ġby Ġlazy Ġ{ ĠMODE LS . map Ġ{ Ġm Ġ-> Ġm . problem Ġ} Ġ} ĊĠĠĠ Ġval ĠUNS AT _ PRO BLE MS : ĠList < Problem > Ġby Ġlazy Ġ{ ĠUNS AT _ MODE LS . map Ġ{ Ġm Ġ-> Ġm . problem Ġ} Ġ} ĊĠĠĠ Ġval ĠL ARGE _ PRO BLE MS : ĠList < Problem > Ġby Ġlazy Ġ{ ĠL ARGE _ MODE LS . map Ġ{ Ġm Ġ-> Ġm . problem Ġ} Ġ} ĊĠĠĠ Ġval ĠNUM ERIC _ PRO BLE MS : ĠList < Problem > Ġby Ġlazy Ġ{ ĠNUM ERIC _ MODE LS . map Ġ{ Ġm Ġ-> Ġm . problem Ġ} Ġ} ĊĠĠĠ Ġval ĠC SP _ PRO BLE MS : ĠList < Problem > Ġby Ġlazy Ġ{ ĠC SP _ MODE LS . map Ġ{ Ġm Ġ-> Ġm . problem Ġ} Ġ} ĊĠĠĠ Ġval ĠT IN Y _ PRO BLE MS : ĠList < Problem > Ġby Ġlazy Ġ{ ĠT IN Y _ MODE LS . map Ġ{ Ġm Ġ-> Ġm . problem Ġ} Ġ} ĊĊĠĠĠ Ġval ĠMODEL 1 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" All ĠRound ĠBasic ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" f 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" f 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm 1 Ġ= Ġmultiple (" m 1 ", Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm 1 . value ( 4 ) Ġimplies Ġm 1 . value ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel ( optional Nominal (" alt 1 ", Ġ" a ", Ġ" c ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġbool (" f 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalt 2 Ġ= Ġoptional Nominal (" alt 2 ", Ġ" a ", Ġ" d ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 3 Ġimplies Ġalt 2 . value (" d ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflag (" f 4 ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠMODEL 2 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" All ĠUnit ĠFeatures ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġbool (" f 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" f 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Nominal (" alt 1 ", Ġ" a ", Ġ" c ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Multiple (" or 1 ", Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ!( f 2 Ġand Ġ" or 1 ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ!( f 2 Ġand Ġ" alt 1 ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ" f 2 " Ġimplies Ġ" f 1 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" f 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ!( f 2 Ġand Ġ" f 3 ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠMODEL 3 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Unit ĠOptions Ġin ĠSelect ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalt 1 Ġ= Ġnominal (" alt 1 ", Ġ" a ", Ġ" b ", Ġ" c ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmult 1 Ġ= Ġmultiple (" mult 1 ", Ġ" a ", Ġ" b ", Ġ" c ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġmult 1 . value (" b ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġalt 1 . value (" c ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠMODEL 4 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" All ĠStandard ĠFeatures ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Nominal (" a 1 ", Ġ 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Multiple (" m 1 ", Ġvalues Ġ= ĠarrayOf ( 1 , Ġ 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnominal (" a 2 ", Ġvalues Ġ= ĠarrayOf ( 1 , Ġ 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmultiple (" m 2 ", Ġvalues Ġ= ĠarrayOf ( 1 , Ġ 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠMODEL 5 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub Model 1 Ġ= ĠModel . model (" r 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" sub 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" sub 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" sub 3 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" sub 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsub Model 2 Ġ= ĠModel . model (" r 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" f 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠModel . model (" Multiple ĠSub ĠModels ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" b 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" b 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" b 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Model ( sub Model 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Model ( sub Model 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġthis @ model [" f 1 "] Ġor Ġthis @ model [" sub 4 "] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠMODEL 6 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" All ĠCard inality ĠOptions Ġexcept ĠNE ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflags Ġ= ĠArray ( 1 2 ) Ġ{ Ġbool ("$ it ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġat Most ( 4 , Ġ* flags . slice Array ( 0 Ġuntil Ġ 1 0 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġat Least ( 4 , Ġ* flags ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġexactly ( 2 , Ġflags [ 0 ], Ġflags [ 1 ], Ġflags [ 2 ]) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġexclude s ( flags [ 2 ], Ġflags [ 3 ]) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġcardinality ( 2 , ĠRelation . GT , Ġ* flags ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġcardinality ( 8 , ĠRelation . LT , Ġ* flags ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠMODEL 7 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Div er ging Ġsub - models ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" sub 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbool (" f 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" sub 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel ( top [" f 1 "], Ġ" r ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag (" f 2 ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠUNS AT 1 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Simple Ġ 2 - Un sat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 1 Ġor Ġf 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 1 Ġor Ġ! f 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! f 1 Ġor Ġf 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! f 1 Ġor Ġ! f 2 Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠUNS AT 2 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Simple Ġ 3 - Un sat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 1 Ġor Ġf 2 Ġor Ġf 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 1 Ġor Ġf 2 Ġor Ġ! f 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 1 Ġor Ġ! f 2 Ġor Ġf 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġf 1 Ġor Ġ! f 2 Ġor Ġ! f 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! f 1 Ġor Ġf 2 Ġor Ġf 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! f 1 Ġor Ġf 2 Ġor Ġ! f 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! f 1 Ġor Ġ! f 2 Ġor Ġf 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! f 1 Ġor Ġ! f 2 Ġor Ġ! f 3 Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠUNS AT 3 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Un sat Ġby ĠCard inality ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġoptional Nominal ( values Ġ= Ġ( 1 .. 1 0 ). toList (). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġat Least ( 2 , Ġa . value ( 1 ), Ġa . value ( 2 ), Ġa . value ( 3 )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠUNS AT 4 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Modified ĠSimple Ġ 2 - Un sat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġa Ġxor Ġb Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel ( b ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġa Ġequivalent Ġc Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġ! b Ġor Ġa Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠL ARGE 1 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Just ĠAltern atives ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Nominal ( values Ġ= ĠArray ( 8 0 ) Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmultiple ( values Ġ= ĠArray ( 8 0 ) Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnominal ( values Ġ= ĠArray ( 8 0 ) Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Multiple ( values Ġ= ĠArray ( 8 0 ) Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠL ARGE 2 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Hierarchical ĠCategory ĠModel ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Categories Ġ= ĠArray ( 5 ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel (" Cat Ġ$ i ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleaf Categories Ġ= ĠArray ( 1 0 ) Ġ{ Ġj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Multiple (" Cat Ġ$ i Ġ$ j ", Ġ* Array ( 1 0 ) Ġ{ Ġ 1 Ġ+ Ġit Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġthis . scope . re ified Value Ġre ified Equivalent Ġdis junction (* leaf Categories ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ Ġdis junction (* top Categories ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat Most ( 5 , Ġ* scope . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġis ĠMultiple < *> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġ( it Ġas ĠMultiple < *> ). values . as Sequence () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList (). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠL ARGE 3 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Flag Ġchain ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnext : ĠModel . Model Builder < *> Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 1 .. 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= Ġnext . model ("$ k ") Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠL ARGE 4 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Random ĠDis junction s ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflags Ġ= ĠArray ( 5 0 0 ) Ġ{ Ġbool ("$ it ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrng Ġ= ĠRandom ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis junction (* permutation ( flags . size , Ġrng ). as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( rng . nextInt ( 8 ) Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġflags [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġif Ġ( rng . next Boolean ()) Ġit . not () Ġelse Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList (). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠNUM ERIC 1 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Ints Ġin Ġhierarchy ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int (" int 1 ", Ġ- 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint (" int 2 ", Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int (" int 3 ", Ġ 0 , ĠInt . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int (" int 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint (" int 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠNUM ERIC 2 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" Ints Ġwith Ġconstraints ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Constraint ( Con junction ( collection Of ( 4 , Ġ- 4 2 , Ġ 9 9 ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠNUM ERIC 3 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" All Ġkinds Ġof Ġnumeric Ġvariables ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int (" int 1 ", Ġmin Ġ= Ġ- 1 0 0 , Ġmax Ġ= Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint (" int 2 ", Ġmin Ġ= Ġ- 1 0 , Ġmax Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Float (" float 1 ", Ġmin Ġ= Ġ- 0 . 1 f , Ġmax Ġ= Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloat (" float 2 ", Ġmin Ġ= Ġ 0 . 0 f , Ġmax Ġ= Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Bits ( nbr Bits Ġ= Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbits ( nbr Bits Ġ= Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Int (" int 3 ", Ġmin Ġ= Ġ- 1 0 , Ġmax Ġ= Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint (" int 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Float (" float 3 ", Ġmin Ġ= Ġ- 0 . 1 f , Ġmax Ġ= Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat (" float 4 ", Ġmin Ġ= Ġ- 0 . 1 f , Ġmax Ġ= Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Bits ( nbr Bits Ġ= Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbits ( nbr Bits Ġ= Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠC SP 1 Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel . model (" All Ġkinds Ġof ĠPB Ġconstraints ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġbool () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġre ified Imp lies Ġconjunction ( f 2 , Ġf 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 4 Ġre ified Imp lies Ġdis junction ( f 1 , Ġf 2 , Ġf 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcardinality ( 3 , ĠRelation . LT , Ġ! f 1 , Ġf 2 , Ġf 3 , Ġ! f 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear ( 2 , ĠRelation . GT , Ġint ArrayOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ), ĠarrayOf ( f 1 , Ġf 2 , Ġf 3 , Ġf 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }