e      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d efghijklmnopqrstuvwxyz{|}~A Safe-Inferred:       None!"!"None>#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`qabcdefghijklmnopqrstuvwxyz{|      #&,/258;<=>?@ABCDEFGHIJKLMN.#$%&'()+*,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`None}~}~}~NoneNone;abcdefghijklmnopqrstuvwxyz{|      #&,/258;<=>?@ABCDEFGHIJKLMN/None$abcdefghijklmnopqrstuvwxyz{|      #&,/258;<=>?@ABCDEFGHIJKLMNNone         None abcdefghijklmnopqrstuvwxyz{|      #&,/258;<=>?@ABCDEFGHIJKLMN}~  NoneNoneshift focus to left shift focus to right  !"#$%&'()*+,-. !"#$%& !"#$%&'()*+,-.None/0123456789:;<=>?@ABCD/012346/0123456789:;<=>?@ABCDNoneEFGHIJKLMNOPQRSTU EFGHIJKLMNOPQ EFGHIJKMLNOPQRSTUNoneVWXYZ[\]^_`abcdefghijklmnopqrsVWXYZ[\]^_`abcdefghijklmnoVWXYZ[\]^_a`bcdefghijklmnopqrs Safe-Inferredtuvwxyz{|}~tuvwxyz{|}~:tuv~}|{zyxw/  Safe-Inferred-      !"#$%&'()*+,-./0123+      !"#$%&'()*+,-./01"       !"#$%&'()*+,-./0123!None456789:;<=>?@ABCDEFGHIJKLMNOPQ456789:;<=>?@ABCDEFGHIJKLMN 456789:;<=>?@ABCDEFGHIJKLMNOPQ"None RSTUVWXYZ[\RSTUVWX RSTUVWXYZ[\#None]^_`abcdefghijklmnopqrstuvwxyz{|}~     ^klmnopqrstuvw}]^_`abcdefghijklmnopqrstwvuxyz{|}~     $None !"#$%&'()*+,-./01 !"#$%&'(* !"#$%&'()*+,-./01%None23456789:;<=>?@AB23456789:;<=?@AB23456789:;<=>?@AB&None.CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopRSTUYZ[\]^_`abcdefghijklmno%CDE FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop'Noneqrstuvtuvqrstuv(Nonewxyzyzwxyz)None {|}~ {|}~*None+None,None-None.None  /None0None1None2None3None4None5 Safe-Inferred   6 Safe-Inferred      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU        !"#&%$')(*10/.-,+2765438;:9<=>?@ABCDEIHGFJPOKLMNQRSTU7 Safe-InferredVWXYZ[\]^_`abcdefghijklmnopqrs]VWXYZ[\]^_`abcdefghijklmnopqrs Safe-Inferred tuvwx utvwx8Noneyzyzyz9None!{|}~{|}{|}~ Safe-Inferred     : Safe-InferredType of mixin functions. Mixin composition. %Turn a mixin into a closed function. Mixin identity function.  Identity for mixin composition:  mixinId <@> f == f  f <@> mixinId == f Mixin lift function  mixin . mixinLift = id  Safe-Inferred $produce a fresh constraint variable the constraints  the labels +add a constraint to the current state, and 4 return whether the resulting state is consistent run a computation -mark the current state, and return its label Rmark the current state as discontinued, yet return a label that is usable n times !go to the state with given label WriterT decoration of a solver 2 useful for producing statistics during solving    Safe-Inferred-Generalization of the search tree data type, * allowing monad transformer decoration. 7show ( !"#$%&'()*+,-./012345678 !"#$%&'()*+,-./012345678!'&%$#"(*+,-./01234578) 6 !'&%$#"()*+,-./012345678None9:;<=>?@ABCDEFGH9:;<=>?@ABCDEFGHFGH9:;<=>?@ABCDE 9:; <=>?@ABCDEFGHNone?IJKLMNOPQRSTUVWXYZ[\]^_`abcdefgIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgfgMNORSbcdeIJKL`a^_PQVWTUXYZ[\]'IJKLMNOPQRSTUVWXYZ[\]^_`ab cdefgNonehijklmnopqrstuvwxyzhijklmnopqrstuvwxyzhijklmnopqstvuwxzyr h ijklmnopqrstuvwxyz; Safe-InferredShow instance | -- }Data types | -- Eq instance | -- 1ExprKey: Provides ordering over expressions | -- @{|}     *{|}{|}     < Safe-Inferredwalk through expressions Helper functions |-- ETransform expressions over one type to expressions over another | -- VCheck whether an expression is possibly referring to terms with a given property | -- ?Count how many references to terms an expression contains | -- Simplify expressions | -- ?Turn expressions over expressions into simply expressions | -- ' !"#$%&'()*+,-./0123456789{|} !"#$%&'()/012789" !"#$%&'()*+,-./0123456789=Nonem:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~W?@ABCDEFGHIJKLMNOPQRUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_#~}|{zyxwvutsrqponmlkjihgfedcba` Safe-Inferredconvertion from/to expression types | -- integer operators/functions | -- list operators/functions | -- boolean operators/functions | -- relational operators/functions | -- Built-in class instances | -- C~1{|}~1}|{~=~  Safe-Inferred?"".>None !definition of a decomposer monad the state for the DCMonad base instance of DecompData base state for the DCMonad Ltransform an expression into a graph, taking and returning an updated state Feasier version of decomposeEx that does not require or return a state Qdecomposition states can be stacked, this function tests whether a property hold # for a state or any of its parents %Decomposition of special values | -- &Real decomposers for expressions | -- 8     *       NoneDA solver needs to be an instance of this FDSolver class in order to ! create an FDInstance around it. fdefinition of FDInstance, a Solver wrapper that adds power to post boolean expressions as constraints Aa label for an FDInstance; must store the FDState plus the Solver's internal state >state kept by FDInstance, in addition to the underlying solver's internal state 0expression representing unprocessed constraints model being processed now Hprivate data for the decomposer (kept to optimize constraints which aren't added in one go) %when adding constraints, the EGEdgeId'$s occurring in the decomposed model 'expressions that need to be decomposed variable counter $already introduced integer variablesterms constants/ expressions needed sets of possible types /which variables are being decomposed right now *which nodes are unified with which others $already introduced boolean variablesterms constants/ expressions 'already introduced collection variablesterms constants/ expressions db of specifiers  solver is failed? !level of nesting "levels of dummyness #initial FDState state $?run the second argument as long as the first one produces true %$helper function to combine two Maybe's \lift a monad action for the underlying solver to a monad action for an FDInstance around it &Smark all new edges(=constraints) of a model given in graph-form as to-be-processed 'add an int term (add a bool term )add a col term *+,-./0123456789:;<=>?@ABCDEFGHI !"JKLMNOPQ    R STUVWXYZ[\]^_#`$a%bcdefghijklmnopqrstuvwxyz{|}~&'() !"#$%&'()*+,-./0{|}~      !"#$%&'()*+,-./0c)(%&'!"# +*,.-/$     0*+,-.10/25436789:;<=>?@ABCDEFGHI !"JKLMNOPQ    R STUVWXYZ[\]^_#`$a%bcdefghijklmnopqrstuvwxyz{|}~&'() !"#$%&'()*+,-./0 None+123456789:;<=>?@ABCDEFGHIJ6-123456789:;<=>?@ABCDEFGHIJ63461278:9GHI5;=>ABC?@DJ<EF-&123456789:;<=>?@ABCDEFGHIJ None?KLMNOPQRSTUVWXYKLMNOPQRSTUVWXYLXWKMVUTSRQPONY+KLM VUTSRQPONWXY?None None Z[\]^_`abcd Z[\]^_`abcd Z[\]^_`abcd Z[\]^_`abcdNoneefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h ilefghijklmnopqrstuvwxyz{|}~lfghijklmnopqr}~wxuvst{|yzeef ghijklmnopqrstuvwxyz{|}~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i@None% j k l m n o p q r s t u v w x y z { | } ~  # j k l m n o p q r s t u v w x z { | } ~   j t s r q p o n m l k u x w v y z { } | ~  ANone  None                          h                                  None    ! "C-123456789:;<=>?@ABCDEFGHIJ     ! " #BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcVdefghijklmnopqrstuvwxyz{|}~;;;v                                                    ! " # $ % & ' ( ) * + , - - . / 0 1 2 2 3 4 5 6 7 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l v m n o p q r s t u v w x y z { | } ~                  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~G      !!"#$%&'()*+G,-./0123456789:;<=>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefeegghhijklmnopqrsWtuvwxyz{|}~Ugn_              } ~                ! " # $ % & ' ( ) * + , - . /!0!1!2!3!3!4!5!5!6!7!8!9!9!:!;!<!=!>!>!?!@!A!B!C!D!E!F!G!H!I"J"J"K"L"M"N"O"P"Q"R"S#T#T#U#V#W#X#Y#Y#Z#[#\#]#]#^#_#_#`#a#b#b#c#d#e#f#g#h#i#j#k#l#m#n#n#o#p#p#q#r#r#s#t#u#v#w#x#y#z#{#|#}#~#####################~#################################################################################^##############################$$$$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$%%%%%%%%%% %!%"%#%$%%%&%'&(&)&V&V&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&b&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R'S'T'U'V'W'X(Y(Z([(\)])^)_)`)a)b)c)d)e)f)g)h*i*j*k+l+m,n,o,p,q-r-s-t.].^._.`.b.c.d.u.v.w.x.y.z/{/|0}0~001122233445555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666 6 6 6 6 666666666666666666666 6!6"6#6$6%6%6&6'6(7)7777*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7CDEFGH8I8J9K9L9M9N9O99P9Q9a9R9F9S9T9H9U9V9W9X9Y9D9Z9[9\9]9^9_9`9a9b9c9d9e9fghi:j:^:k:l:mnopqrstuvwxyz{|}~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;P;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<===================== = = = = = = =================== =!="=#=$=%=&='=(=)=*=+=,=-=.=/=0=1=2=3=4=5=6=7=8=9=:=;=<===>=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\===]^_`abcdefghijklmnopq r s t u v w x y z { | } ~    Z Y X          >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>                                         B                                                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 * : ; < = > ? @ A B C D E F G H I J K L M N O P Q R R S S T T U V W X Y Z [ \ ] ^ _   ` a b c   d e f p g q h i j k l  m n  o p q r s t u v w x y z { | } ~        ?????9    @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !@ "@ #@ $@ %@ &AmA 'A (AA9A ) * + , , - . - / 0 1 2 / 3 4 4 5 6 7 8 9 : ;m < = > ? @ A B C D E F G H I J K L M N O Pl Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                              monadiccp-0.7.5Control.CP.PriorityQueueControl.CP.QueueControl.CP.SolverControl.CP.SearchTreeControl.CP.Transformers!Control.CP.ComposableTransformersControl.CP.EnumTermData.Expr.SugarControl.CP.FD.ModelControl.CP.FD.FDControl.CP.FD.Interface!Control.CP.FD.OvertonFD.OvertonFDControl.CP.FD.SolversControl.CP.FD.Gecode.Common"Control.CP.FD.Gecode.CodegenSolverControl.CP.FD.ExampleControl.Monatron.MonadTControl.Monatron.AutoInstancesControl.Monatron.TransformerControl.Monatron.MonadControl.Monatron.CodensityControl.Monatron.OperationsControl.Monatron.AutoLiftControl.Search.SStateTControl.Monatron.MonatronControl.Monatron.IdTControl.Monatron.ZipperControl.Monatron.MonadInfoControl.Monatron.OpenControl.Monatron.ZipperExamplesControl.Search.LanguageControl.Search.GeneratorInfoControl.Search.MemoControl.Search.MemoReaderControl.Search.GeneratorControl.Search.StatControl.Search.ConstraintsControl.Search.Combinator.BaseControl.Search.Combinator.MiscControl.Search.Combinator.PrintControl.Search.Combinator.OrControl.Search.Combinator.For!Control.Search.Combinator.FailureControl.Search.Combinator.UntilControl.Search.Combinator.OnceControl.Search.Combinator.If"Control.Search.Combinator.OrRepeatControl.Search.Combinator.Let!Control.Search.Combinator.SuccessControl.Search.Combinator.And Control.Search.Combinator.RepeatControl.Search.Combinator.Post Data.LinearLanguage.CPP.Syntax.ASTLanguage.CPP.PrettyControl.CP.DebugControl.CP.FD.OvertonFD.DomainControl.Mixin.MixinData.Expr.DataData.Expr.UtilControl.CP.FD.GraphControl.CP.FD.DecomposeControl.CP.FD.SimpleFDControl.CP.FD.SearchSpec.DataControl.CP.FD.OvertonFD.Sugar PriorityQueueis_emptyemptyminKey minKeyValueinsert deleteMindeleteMinAndInsertQueueElememptyQisEmptyQpopQpushQTermHelpnewvarhelpSolver ConstraintLabeladdrunmarkmarkngoto MonadTree TreeSolveraddTofalse\/existslabelTreeNewVarAddTryReturnFail transformTreemapTreebindTree insertTree/\truedisjconjdisj2primaddCaddTexistforalluntreeindentshowTree NodeBoundedSTDepthBoundedST Transformer EvalState TreeState ForSolver ForResultleftTrightTnextTinitTreturnTendTevaleval'continue RestartST SealedCSTSealNewBoundBoundCBranchBoundSTCBBST Composition:-CSolutionBoundSTCSBSTCFirstSolutionSTCFSST CIdentityCSTCIST CRandomSTCRSTCLimitedDiscrepancySTCLDSTCDepthBoundedSTCDBSTCNodeBoundedSTCNBST CTransformer CTreeState CForSolver CForResultsolverestartEnumTerm TermBaseType getDomainSize getDomainsetValue splitDomain splitDomainsgetValue defaultOrder enumerator enumerate assignment assignments firstFailinOrder middleOutendsOut levelList labellingBoolExprColExprExpr ExprRange@: ExprClass@=@/= ToBoolExpr toBoolExpr ToColExpr toColExprToExprtoExpr@+@-@*@/@%@?@??!@!!@..@++sizexfoldxsumlistxheadxtailslicexmaploopallloopanyforanychannel@||@&&inv@<@>@<=@>=sortedsSortedallDiffallDiffD ToModelColasCol ToModelIntasExpr ToModelBoolasBool ModelTermType newModelTermModel ModelColArg ModelBoolArg ModelIntArgModelCol ModelBoolModelIntModelFunctions ForNewCol ForNewInt ForNewBool ModelBoolTerm ModelExtra ModelBoolPar ModelBoolVar ModelColTerm ModelColPar ModelColVar ModelIntTerm ModelIntPar ModelIntVar showModelmodelVariantIntmodelVariantColmodelVariantBoolcteFDSolver FDIntTerm FDBoolTerm FDIntSpec FDBoolSpec FDColSpec FDIntSpecTypeFDBoolSpecType FDColSpecTypefdIntSpec_constfdBoolSpec_constfdColSpec_constfdColSpec_listfdIntSpec_termfdBoolSpec_termfdColSpec_size fdIntVarSpec fdBoolVarSpec fdTypeReqBool fdTypeReqInt fdTypeReqCol fdTypeVarInt fdTypeVarBool fdSpecify fdColInspect fdProcess fdEqualBool fdEqualInt fdEqualColfdConstrainIntTermfdSplitIntDomainfdSplitBoolDomain FDSpecInfo FDSpecInfoCol fdspColSpec fdspColVar fdspColVal fdspColTypes FDSpecInfoInt fdspIntSpec fdspIntVar fdspIntVal fdspIntTypesFDSpecInfoBool fdspBoolSpec fdspBoolVar fdspBoolVal fdspBoolTypesSpecFn SpecFnRes SpecResult SpecResUnify SpecResSpec SpecResNone FDInstancesetMinimizeVargetMinimizeVargetMinimizeTerm boundMinimizerunFD procSubModelprocSubModelExgetLevelspecSubModelEx getBoolSpec_ getBoolSpec getIntSpec_ getIntSpec getColSpec_ getColSpecliftFDspecInfoBoolTermspecInfoIntTermfdSpecInfo_specgetEdgemarkEdgenewColnewIntnewBoolgetSingleIntTerm getIntTerm getBoolTerm getColTerm getColItems getIntVal getBoolVal getColVal setFailedaddFD getDefIntSpecgetDefBoolSpec getDefColSpecgetFullIntSpecgetFullBoolSpecgetFullColSpecfdNewvarvalcolListlabelColallinFDVar OvertonFD OConstraintOAbsOMultOSubOAddOLessEqOLessODiffOSame OHasValue fd_domain fd_objectivelookupdfsbfspfsnbdbbbsbfsitraldGecodeWrappedSolver GecodeSolver GecodeIntVar GecodeBoolVar GecodeColVar newInt_at newInt_cond newCol_list newCol_size newCol_catsplitIntDomainsplitBoolDomain col_getSize col_regList GecodeICIFn GecodeIIIFn GecodeIIFn GecodeCIFn GecodeCBFn GecodeIBFnGecodeConstraintGCCondGCDomGCCountGCSumGCFoldCGCFoldGCMapGCAnyCGCAllCGCAnyGCAllGCSorted GCAllDiffGCEquivGCNotGCOrGCAndGCSliceGCCatGCSize GCChannelGCAtGCAbsGCModGCDivGCMult GCColEqual GCLinearReifGCLinearGCIntVal GCBoolEqual GCBoolValGecodeOperator GOLessEqualGOLessGODiffGOEqualGecodeColSpecTypeGCSVar GCSSectionGCSConst GecodeColSpecGCTVar GCTSectionGCTConstGecodeBoolSpecTypeGBSVar GBSCondConstGBSConstGecodeBoolSpecGBTVar GBTCondConstGBTConstGecodeIntSpecTypeGISVar GISLinearGISConst GecodeIntSpecGITVar GITLinearGITConst GecodeLinearGecodeColVarOrSectionGecodeListConstGecodeColConstGecodeBoolConstGecodeIntConstGecodeColParamGCParamGecodeBoolParamGBParamGecodeIntParamGIParamprocConstraintliftGCunliftGCaddMetatoConst fromConst toBoolConst fromBoolConstCodegenGecodeSolverCodegenGecodeOptions noTrailing noGenSearch setOptionsgenerateGecodeExampleMinModel ExampleModel example_mainexample_min_mainexample_sat_mainexample_sat_main_voidexample_min_main_voidexample_sat_main_singleexample_min_main_singleexample_sat_main_single_exprexample_min_main_single_exprexample_sat_main_coll_exprexample_min_main_coll_exprFCompCompdeCompMMonadTflift monoidalTFMonadTtmap'FunctorDfmapDMonadTlifttreturntbindfunctortmapmtmap$fFunctorFCompbaseGHC.Basefail>>=>>fmapreturn Control.MonadguardliftMMonadFunctor MonadPlusmfilterapliftM5liftM4liftM3liftM2unlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinvoidforever<=<>=>msumforM_forMfilterMmapM_mapM sequence_sequence=<<mplusmzero $fFunctort$fMonadtStepTTrunTListTLunLLSigConsTNilTContTCunCExcTXunXReaderTRunRWriterTWunWStateTSunSstateT runStateTwriterT runWriterT runReaderTreaderTexcTrunExcTrunContTcontTrunListTlistTemptyLappendL foldListT collectListTstepTrunStepT caseStepT unfoldStepT$fFMonadTStepT $fMonadTStepT$fFMonadTListT $fMonadTListT $fMonadTContT $fFMonadTExcT $fMonadTExcT$fMonadFixExcT$fMMonadTReaderT$fFMonadTReaderT$fMonadTReaderT$fMMonadTWriterT$fFMonadTWriterT$fMonadTWriterT$fMMonadTStateT$fFMonadTStateT$fMonadFixStateT$fMonadTStateT Data.MonoidmconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastCont ExceptionReaderWriterStateLiftrunLiftIdrunIdstaterunStatewriter runWriterreader runReader exception runExceptioncontrunCont$fMonadFixLift $fMonadFixId $fFunctorLift $fFunctorId $fMonadLift $fMonadId Codensity unCodensity codensity runCodensity$fMonadFixCodensity$fMonadTCodensityListOpPlusListZeroListStepOpContOpCallCCAbortWriterOpTraceHandleOpHandleThrowOpThrowReaderOpInEnvAskStateOpPutGetAlgModelExtModeltoAlg liftModel liftAlgModel liftExtModel modelStateTgetXputX modelReaderTaskXinEnvXlocalXmodelThrowExcTmodelHandleExcT modelThrowIO modelHandleIOthrowXhandleX modelWriterTtraceX modelContTabortXcallCCXcallccX modelStepTstepX modelListT zeroListX plusListX$fFunctorListOp$fFunctorStepOp$fFunctorContOp$fFunctorWriterOp$fFunctorHandleOp$fFunctorThrowOp$fFunctorReaderOp$fFunctorStateOpListM listModelContM contModelExcM throwModel handleModelReaderM readerModelWriterM writerModelStateM stateModelgetputtellasklocalthrowhandlecallCCmZeromPlus$fListMt $fListMListT $fContMrt $fContMmContT$fExcMzt$fExcMSomeExceptionIO $fExcMzExcT $fReaderMzt$fReaderMzReaderT $fWriterMzt$fWriterMzWriterT $fStateMzt$fStateMzStateTSStateTSSunSSTup2fst2snd2sstateT runSStateT modelSStateT$fStateMzSStateT$fMMonadTSStateT$fFMonadTSStateT$fMonadFixSStateT$fMonadTSStateTversionIdTrunIdT $fFMonadTIdT $fMonadTIdTleftLrightL:><:Viewtofrom:>runL runZipperzipperiovlifthcompvcomprstateIsogetvputv $fListM:> $fContMr:> $fExcMz:> $fReaderMz:> $fWriterMz:> $fStateMz:> $fMonadT:> $fFMonadT:> MonadInfoTtminfo MonadInfominfoMInfomiBasemiIncundef $fMonadInfot$fMonadInfoTIdT$fMonadInfoLift $fMonadInfoId$fMonadInfoTCodensity$fMonadInfoT:>$fMonadInfoTStepT$fMonadInfoTListT$fMonadInfoTContT$fMonadInfoTExcT$fMonadInfoTReaderT$fMonadInfoTWriterT$fMonadInfoTStateT:<:injOpenFixInout:+:InrInl<@>fixinjectfoldFix $fFunctor:+: $f:<:f:+: $f:<:f:+:0$f:<:ffExpr3VarLitM4RegMemRetrieveStoreCountEnvfmaskevalMem2litvarstoreretrieveevalLitevalVareval4test handleExc $fFunctorMem $fFunctorAdd $fFunctorVar $fFunctorLit Simplifiablesimplify Statement DebugValue DebugOutputBlockDeleteBIFoldBFoldIFoldFoldPostSHookPrintAssignSeqSkipPush IfThenElseFalseCTrueCGqCGtCLqCLtCNqCEqCValueMinValMaxValDummyAssignedCondBaseNewNullRandomMedianLbRegretUbRegretWDegreeDegreeMaxDomMinDomIVar BAVarSize BAVarElemAVarSizeAVarElemMaxVHookNotOrAnd BaseContinueEqGtGqLtPFieldField'FieldCloneDerefRefAbsModDivMultPlusMinus RootSpaceBValIValTypeTHookSTypeUnionBoolInt SpaceTypePointerStructPrettyprettyXpretty PrettyFlagsgenModeGenModeModeMCPModeFZ ModeGecodeModeUnk spacetypexsspace renderVardivValue&&&|||@==@->@=>lex simplValue$==$/=$<$<=$>$>=neginlinercommentdecinc>>><==assignifthenseqs simplStmt$fSimplifiableValue$fSimplifiableStatement$fPrettyStatement $fShow(->)$fEq(->) $fOrd(->) $fShow(->)0 $fEq(->)0 $fOrd(->)0$fPrettyConstraint $fPrettyValue $fPrettyType $fNumValue$fPrettyStruct$fMonoidStatementInfo baseTstatepathabort_commit_oldclonefield stackField treeStateType evalStateTypespace@@tstate tstate_typeestate estate_type withCommitonAbortonCommit onCommit'withPathwithBase withClone withField resetPath resetCommit shiftCommit resetAbort shiftAbort resetClone resetInfomkInfoinfonewinfocommitabort primClonecloneIt$fEqInfo $fOrdInfoMemoMgetMemosetMemoMemoTunMemoTMemoInfomemoMap memoCountmemoRead MemoValuememoIdmemoCodememoUsed memoFieldsMemoKeymemoFnmemoInfo memoStack memoExtra memoStatement memoParams initMemoInforunMemoT$fMemoMt $fMemoMMemoT$fMonadInfoTMemoT MemoReaderT unMemoReaderT memoReaderT deMemoReaderTrunMemoReaderTmodelMemoReaderT$fReaderMsMemoReaderT$fFMonadTMemoReaderT$fMonadInfoTMemoReaderT$fMonadTMemoReaderT ProgramStringheader functionsmainpcomment FunctionDeffunNamefunArgsfunBodySearchCombinerElemmapperSearchCombinerrunnerelemsSearchmkeval runsearchMkEvalSeqPosSecondSFirstSOutSMemoablememox HookStatsM hookCalled HookStatsT unHookStatsTHookStatnCallsEvalstructs treeState_ evalState_ nextSameH nextDiffH pushLeftH pushRightHbodyHinitHaddHreturnHfailHtryHtryLH startTryH intArraysE boolArraysEintVarsEdeleteHtoString canBranchcompleteEvalableVarInfoM lookupVarInfo setVarInfoVarInfoT unVarInfoTVarInfoVarIdGenModeMgetFlagsgetModeGenModeT unGenModeTmodify runGenModeTcommentStatement commentEvalentry rootEntryinitsinitemkCopymkUpdatemseqsmapE runHookStatsTcallHooknextSamenextDiffpushLeft pushRightbodyEaddEreturnEinitEfailEtryE startTryEtryE_deleteEmapE_ buildMemoKey lookupMemo insertMemo invokeMemo cacheCallcacheStatement_cacheStatementmemomemoLoop cachedCommit cachedAbort cachedClonerReaderT seqSwitch numSwitch@++@ ref_count ref_countxref_count_type cloneBase@>>>@@$@.printTreeStateTypeprintEvalStateType initEvalStateinitTreeState_ initIntArraysinitBoolArrays declIntArraysdeclBoolArrays initIntVars declIntVarscorefnmainfncppfnmcpfn typedecls declRootStategenerate generatemcp generatecpprprpxfixallmemoizeextractCombiners buildCombinerliftSearchCombinerElemsmmapmfunctor evalSStateTgenfuntransformProgramgenprog monadInfogetgenrefTypesearch'fixArgs needInline inlineMapsearch$fMonoidProgramString $fMemoablem$fMemoable(->) $fHookStatsMt$fHookStatsMHookStatsT$fMonadInfoTHookStatsT $fEvalablem $fVarInfoMt$fVarInfoMVarInfoT$fMonadInfoTVarInfoT $fGenModeMt$fGenModeMGenModeT$fMonadInfoTGenModeTStatIValuereadStatevalStatappStatliftStat constStat#>#=#<#>=#<=#/notStat depthStatdiscrepancyStat nodesStat solutionsStatvarStat failsStateStattimeStat $fBoundedStat $fNumStat$fEqStat $fShowStat $fNum(->) ConstraintGenConstraintExprcvarscbvarscvarcvalclvarcopctruecfalse cexprStat cexprStatVal cexprStatMin cexprStatMax cexprStatMedVarSelValSel treeStateL leftChild_L rightChild_LaddLtryL intArraysL boolArraysLintVarsLv1LabelvLabelvbLabel foldVarSel ifoldVarSel bfoldVarSel bifoldVarSel pushLeftTop pushRightTopbaseLoopvlabelilabel int_assignglabelgblabelmaxVminVlbVubVdomsizeV lbRegretV ubRegretVdegreeVdomSizeDegreeVwDegreeVdomSizeWDegreeVrandomVminDmaxDmeanDmedianDrandomD assignLoopldsLoopdbsLoopbbLoopbbminldsdbs printLoop debugLoopprtdbgxs1xfs1xs2xfs2xetxs3xfs3xs4xst xneedSideorLoop<|>forLoopforforeachfailLoopfailure untilLooplimitglimituntilonceLooponceonceOldxfs4in1in2xpathifLoopif' orRepeatLooporRepeat stmPrefixLoopletLooplet'set' successLoopdummyseqNLoopandN<&> repeatLooprepeatpostLooppostLinear termToLinearintegerToLinear constToLinear linearToListlinearToListExgetCoef linearMultlinearMultiply linearToConst linearToTerm $fNumLinear CPPBinaryOpCPPOpLOr CPPOpLAndCPPOpXorCPPOpOrCPPOpAndCPPOpNeqCPPOpEqCPPOpGeqCPPOpLeqCPPOpGrCPPOpLeCPPOpShrCPPOpShlCPPOpSubCPPOpAddCPPOpRmdCPPOpDivCPPOpMul CPPUnaryOpCPPOpNeg CPPOpComp CPPOpMinus CPPOpPlusCPPOpIndCPPOpAdr CPPOpPostDec CPPOpPreDec CPPOpPostInc CPPOpPreInc CPPAssignOp CPPAssOpXor CPPAssOpOr CPPAssOpAnd CPPAssOpShr CPPAssOpShl CPPAssOpSub CPPAssOpAdd CPPAssOpRmd CPPAssOpDiv CPPAssOpMulCPPAssOpCPPConstCPPConstString CPPConstFloat CPPConstChar CPPConstIntCPPExprCPPNewCPPVar CPPMemberCPPCallCPPIndex CPPSizeOfType CPPSizeOfExprCPPCastCPPCondCPPUnary CPPBinary CPPAssignCPPComma CPPBlockItem CPPComment CPPBlockDecl CPPStatementCPPStat CPPDelete CPPReturnCPPBreakCPPContCPPGotoCPPForCPPWhile CPPSwitchCPPIf CPPVerbStat CPPCompound CPPSimple CPPDefaultCPPCaseCPPLabel CPPConstr cppConstrStor cppConstrArgs cppConstrBody cppConstrInitCPPDef cppDefName cppDefRetType cppDefStor cppDefQual cppDefArgs cppDefBodyCPPDecl cppDeclNamecppType cppTypeQual cppTypeStor cppDeclInitCPPInit CPPInitArray CPPInitCall CPPInitValueCPPQualCPPQualVolatile CPPQualConst CPPStorSpec CPPVirtual CPPInline CPPTypedef CPPExtern CPPStatic CPPRegisterCPPAutoCPPTypeCPPTemplCPPRefCPPPtrCPPArray CPPTypePrim CPPVisibility CPPPrivate CPPProtected CPPPublicCPPClass cppClassNamecppClassInherit cppClassDecls cppClassDefscppClassConstrs CPPNamespace CPPElement CPPElemClass CPPElemDef CPPElemDeclCPPElemNamespace CPPMacroStmCPPMacroDefinecppMacroDefNamecppMacroDefArgscppMacroDefExprCPPMacroIncludeSysCPPMacroIncludeUserCPPFile cppMacroStmcppUsing cppTranslUnitToString prettyPrecprio prettyStringcodegen$fPrettyCPPFile$fPrettyCPPClass$fPrettyCPPNamespace$fPrettyCPPElement$fPrettyCPPMacroStm$fPrettyCPPBlockItem $fPretty(,)$fPrettyCPPDef$fPrettyCPPDecl$fPrettyCPPType $fPretty(,)0 $fPretty(,,,)$fPrettyCPPVisibility $fPretty[]$fPrettyCPPStorSpec$fPrettyCPPQual$fPrettyCPPStat$fPrettyEither $fPrettyMaybe$fPrettyCPPExpr$fPrettyCPPConst$fToStringCPPAssignOpBranchNilunionlink singletondebugimdebugToDomaintoDomainDomainRangeSetmember isSubsetOf intersection differencenull isSingletonfilterLessThanfilterGreaterThanfindMaxfindMin shiftDomain mapDomain absDomain mirrorDomainprintDomdebugDom $fEqDomain $fToDomaina $fToDomain() $fToDomain(,) $fToDomain[]$fToDomainIntSet$fToDomainDomain$fQueuePriorityQueue $fQueueSeq $fQueue[]MixinmixinmixinId mixinLift$fSolverWriterT$fTermWriterTt flattenTree$fMonadTreeStateT$fMonadTreeWriterT$fMonadTreeReaderT $fShowTree$fMonadTreeContT$fMonadTreeTree $fMonadTree $fFunctorTreeNBSTDBST ContinueSig SearchSig$fTransformerNodeBoundedST$fTransformerDepthBoundedST BBEvalStateBBP CEvalStateinitCTleftCTrightCTnextCTreturnCT completeCTEXITCONTINUEEVAL CContinueSig CSearchSigTStack nextTStackevalCT continueCTexitCT$fTransformerRestartST$fCTransformerSealedCST$fCTransformerCBranchBoundST$fCTransformerComposition$fCTransformerCSolutionBoundST$fCTransformerCFirstSolutionST$fCTransformerCIdentityCST$fCTransformerCRandomST#$fCTransformerCLimitedDiscrepancyST$fCTransformerCDepthBoundedST$fCTransformerCNodeBoundedST$fTransformerTStack interleaveShowFn equalExpr<<>>showFnDomSortedAllDiff BoolEqualColEqualBoolAnyBoolAllRelBoolCondBoolNotBoolOrBoolAnd BoolConstBoolTermExprRelERLessERDiffEREqualColCatColSliceColMapColRangeColListColTermChannelColSizeAtConstExprHole equalColExpr equalBoolExprcompareColExprcompareBoolExpr compareExpr $fOrdBoolExpr $fOrdColExpr $fOrdExpr $fEqBoolExpr $fEqColExpr$fEqExpr$fShowBoolExpr $fShowColExpr $fShowExpr $fShowFn(->)$fShowFnBoolExpr$fShowFnColExpr $fShowFn[] $fShowFnExpr WalkPhaserelCheck transform propertyExvarrefscollapse WalkResult WalkDescendWalkSkipWalkPost WalkSingleWalkPre transformEx colTransformcolTransformEx boolTransformboolTransformEx colPropertyExboolPropertyExproperty colProperty boolPropertypropIntpropColpropBool colVarrefs boolVarrefs colSimplify boolSimplify colCollapse boolCollapsexwalkerwalker colWalker boolWalkerwalkcolWalkboolWalkDisplaydisplay displayer DisplayDataEGModel egmParamsegmVars egmNEdgesegmEdgesegmLinksEGEdgeegeConsegeLinks EGTypeDataboolDataintDatacolDataEGVarIdunVarIdEGEdgeId unEGEdgeId EGConsArgsEGColPar EGBoolParEGPar EGParColTerm EGPTColParam EGParBoolTerm EGPTBoolParam EGParTerm EGPTParamEGConstraintSpec EGCondInt EGCondEqualEGDom EGAllDiffEGSortedEGAnyEGAllEGLessEGDiffEGEqualEGNotEGEquivEGOrEGAndEGCatEGSliceEGMapEGRangeEGList EGChannelEGSizeEGFoldEGAtEGAbsEGModEGDivEGMultEGMinusEGPlus EGColExtern EGBoolExtern EGIntExtern EGColValue EGBoolValue EGIntValue EGVarType EGColType EGIntType EGBoolTypedummyConstraint getConsArgs baseTypeData egTypeDataMap egTypeGet egTypeModshowBoolshowIntshowColshowLst externMap emptyModel filterModelprefixaddEdgeunifyIdsdelEdgefindEdge pruneNodes unifyNodesaddNodedelNode baseGraphpresent displaySinglegetConnectedEdges$fDisplayDisplayData$fDisplayEGModel$fDisplayEGEdge$fExprClasstcbExpr $fNumExpr$fExprRangetcbColExpr$fExprRangetcb(,)$fExprClasstcbColExpr$fExprClasstcbBoolExpr$fToBoolExprtabb$fToColExprtaba $fToExprtabt$fToBoolExprtabBoolExpr$fToBoolExprttccbbBool$fToColExprtab[]$fToColExprtabExpr$fToColExprtabColExpr$fToExprtabBoolExpr$fToExprttccbbInt$fToExprtabExpr$fToExprttccbbInteger$fIntegralExpr $fEnumExpr $fRealExpr FlatModel FlatModelCol FlatModelBool FlatModelInt ModelColExpr ModelBoolExpr ModelIntExpr ModelIntrosNewColNewIntNewBool explicateflattenvariantIntTermvariantBoolTermvariantColTerm $fToModelColt$fToModelBoolt $fToModelIntt$fModelTermTypeColExpr$fModelTermTypeExpr$fModelTermTypeBoolExpr$fOrdModelFunctions$fEqModelFunctions$fShowModelFunctions$fOrdModelIntrosDCMonadDCStatebaseDecompData baseDCState decomposeEx decompose stateProperty decomposeBoolrealDecomposeBoolExdcsDatadcsModel DecompData cseMapBool cseMapInt cseMapCol cseParent cseImportscseNIds cseLockedcseLeveldecompBoolLookupdecompIntLookupdecompColLookupnewVar importBool importInt importCol unifyVars addConstraint newBoolVar newIntVar newColVardecomposeSubmodel constIntTrans constColTransconstBoolTransconstIntTransInvconstColTransInvconstBoolTransInv constTrans invConstTransdependenceTesterdependentIntExprdependentBoolExprdependentColExprnextIddecomposeBoolEx decomposeInt decomposeColrealDecomposeIntlistAllrealDecomposeColFDLabelFDStatefdsExprfdsModel fdsDecomp fdsNewEdges fdsForceBoolfdsVars fdsIntVarsfdsIntVarTypes fdsIntVarBusy fdsIntUnifies fdsBoolVars fdsColVarsfdsDb fdsFailedfdsLevel fdsDummyLevel baseFDStatewhileMjoinWith initForModel addIntVar addBoolVar addColVarFDColSpecTypeSetFDIntSpecTypeSetFDBoolSpecTypeSetSpecDb TermTypeSpecFDSColFDSIntFDSBoolTermTypeFDTColFDTIntFDTBoolSpecColSpecIntSpecBool unFDInstancefdlStatefdlLabel fdsDoneEdges fdsForcedBool fdsForceInt fdsForcedInt fdsForceColfdsBoolVarTypesfdsBoolVarBusyfdsBoolUnifiesfdsColVarTypes fdsColVarBusy fdsColUnifiesfdsMinimizeVarfdsMinimizeTerm myFromJust unifyInts unifyBools unifyColsmapValsdumpSpec linkExternsoptimizeSetSetoptimizeVarTypescheckNeedSpecType decompSpecdecompBestHelp decompBestdecompDefaultBooldecompDefaultIntdefaultBoolDecompdefaultIntDecomp getBoolSpec__ getIntSpec__ getColSpec__ edgesLeftwhileM_ liftFDTree fdsBoolSel fdsIntSel fdsColSel addBoolSpec addIntSpec addColSpecemptyFDSpecInfoBoolemptyFDSpecInfoIntemptyFDSpecInfoCol unionSpecBool unionSpecInt unionSpecColspecInfoMapBoolspecInfoMapIntspecInfoMapColfdSpecInfo_edgefdSpecInfo_spec_bfdSpecInfo_spec_ifdSpecInfo_spec_c fdGetValBool fdGetValIntfdCombineSpecifyprocEdge sureMaybe allIntSpec allBoolSpec allColSpecdefault_fdSpecifydefault_fdProcesssetAlter addSpecInt addSpecBool addSpecColfull_fdProcessfull_fdSpecify getJustEdge buildSpecDbaddBoolTypeReq addIntTypeReq addColTypeReq addTypeReqs processExprocesscombinerealGetIntTermrealGetBoolTerm getIntVal_ getBoolVal_ getColVal_ getFailed$fEnumTermFDInstanceBoolExpr$fEnumTermFDInstanceExpr$fTermFDInstanceColExpr$fTermFDInstanceBoolExpr$fTermFDInstanceExpr$fSolverFDInstance$fShowFDSpecInfoCol$fShowFDSpecInfoInt$fShowFDSpecInfoBool$fOrdFDSpecInfoCol$fEqFDSpecInfoCol$fOrdFDSpecInfoInt$fEqFDSpecInfoInt$fOrdFDSpecInfoBool$fEqFDSpecInfoBool$fShowTermTypeSpecModelExprClass DummyTermEQHelp DummySolver treeToModeladdMmm$fModelExprClassTree$fModelExprClassBoolExpr$fModelExprClassColExpr$fModelExprClassExpr$fSolverDummySolver$fTermDummySolvert$fMonadDummySolverBinaryConstraint varSupplyvarMap objectiveVarMapdelayedConstraintsdomain VarSupplyunFDVarunFD addOverton consistentFD runOverton initStatenewVarsupdateaddBinaryConstrainthasValuesamewhenwhen different.<..<=.dumpaddArithmeticConstraintaddUnaryArithmeticConstraintaddSumaddSubaddMultaddAbs getDomainPlusgetDomainMinus getDomainMult getDomainDiv $fOrdFDState $fEqFDState $fShowVarInfo$fEnumTermOvertonFDFDVar$fTermOvertonFDFDVar$fSolverOvertonFDitakesimple_fdSpecifytrueSpecsimple_fdProcesstreeAllGecodeWrappedLabelGecodeFnProcablegwalkGecodeColSectionGecodeColVarOrConstGecodeIntVarOrConst buildList buildSectiongetIntVarOrConstgetColVarOrConst getAnyColSpec transIntPar transBoolPar transColPartransRevIntPartransRevBoolPartransRevColPartransFns transIFnstransPar transIPar transParBool transIParBool transParCol transIParCol invOperator procHelperInt procHelperColprocHelperBool procHelperunwrapConstraintwrapConstraintidxuFnuIBFnuCBFnuCIFnuIIFnuIIIFnuICIFnwFnwIBFnwCBFnwCIFnwIIFnwIIIFnwICIFn extractFullintSpecToLinear retLinearforceDecompInt getReifSpecforceLinearInt forceConstIntforceDecompBoolforceDecompCol linearTypes onlyVarType onlyConstTypedefTypesonlyBoolVarType defBoolTypes reifBoolTypes allColTypes allCColTypes defColTypessectionColTypes constColTypesconstCColTypesonlyConstColType typeReqInt typeReqBool typeReqColfromAll fromAllConst doIntSpec doBoolSpec doColSpecgetVarOrSection linearSpec constSpecconstMaybeSpec constFullSpeclinearMaybeSpeclinearFullSpec specConst specBoolConst specColConstspecMapspecify removeFromreduceCountFoldreduceMultCountFoldreduceSumFoldToMapextractSumFold tryColSpecs tryIntSpecs tryBoolSpecs$fFDSolverGecodeWrappedSolver$fTermGecodeWrappedSolvert$fSolverGecodeWrappedSolver$fMonadGecodeWrappedSolver$fEnumTermGecodeWrappedSolvert!$fGecodeSolverGecodeWrappedSolver$fShowGecodeFn$fShowGecodeICIFn$fShowGecodeIIIFn$fShowGecodeIIFn$fShowGecodeCIFn$fShowGecodeCBFn$fShowGecodeIBFn $fProcable[] $fProcable(,)$fProcable(,)0$fProcableLinear$fProcableEither$fProcableColExpr$fProcableBoolExpr$fProcableExpr SearchSpecPrintSol BranchBoundLimitDiscrepancyLimitNodeCount LimitDepth LimitSolCountTryOnce CombinePar CombineSeq Labelling LabelBoolLabelColLabelIntConstraintBoolExprConstraintRefsValRefVarRefVarExprOptimDirectionMinimizeMaximizeVarStatDDummyDMedianDRandom DWDregreeDDegree DUpperRegret DLowerRegretDDomSize DUpperBound DLowerBound mmapSearch$fShowLabelling processBinary processUnary$fFDSolverOvertonFDCompilableModelspecific_compileColVarBoolVar BoolVarCPPIntVar IntVarCond IntVarCPP IntVarIdxcgsStateCodegenGecodeStatenIntVars nBoolVarsnIntParsintParsnColParscolParscolVars colListEntconsintRetboolRetcolRetlevelparentoptions searchSpec ColParDef ColParDefCPP ColParDefExt IntParDef IntParDefCPP IntParDefExtColDefColDefConstMap ColDefCat ColDefList ColDefSize initOptions newIntParam newColParamgenVar defineColcolSizelstindex registerList lookupList resolveVars buildState getTopState modTopStatecompileretState astCompile astIncludes astGenerateastTIntastTIVastTIAastTIVAastTBVastTBVAastIntastThis astLowerBound astUpperBound astColSize astIntParam astBoolParam astColParam astBoolExpr astColExpr astIntExprastDecl astDeclEq astDeclEqA astDeclFncallunvarastLinOperator astReifListvarName boolVarName colVarName intVarName astBoolExt astColExt astIntExt astBoolVar astIntVar astColVarastLinearConstraint astTempList astTempSetastTempSetConstastParTempList astSection astSectionMastMCPTypeName astMCPTypewithParwithParM astConstraintastSimpleConstraintifList fnLoadColPar astTranslUnitastMainUnitGenastMainUnitDefastPost transExprV transExprCtransDir transSearch $fNumCPPExpr$fCompilableModelTree$fCompilableModel(->)$fCompilableModel(->)0$fCompilableModelFDInstance$fCompilableModelFDInstance0$$fCompilableModelCodegenGecodeSolver!$fGecodeSolverCodegenGecodeSolver $fTermCodegenGecodeSolverBoolVar$fTermCodegenGecodeSolverIntVar$fSolverCodegenGecodeSolver postMinimizecodegenOptionset runSolveSAT runSolveMINrunSolvelabeller